From 31de54096243fb000fa6e7008a914861293482a5 Mon Sep 17 00:00:00 2001 From: srdusr <99972264+srdusr@users.noreply.github.com> Date: Fri, 9 Aug 2024 09:36:00 +0200 Subject: Fix a misleading workspace comment and drop four dead config keys visible_windows' doc comment claimed windows show "on the active workspace of whichever monitor they're assigned to" - the code never reads w.monitor at all; current_workspace is one flat value shared by every monitor, not per-output. Documented that explicitly on both the field and the method, since this is a real behavioral difference from Hyprland worth a reader actually seeing, not just an inaccurate comment to fix quietly. monitor.primary_workspace/monitor.workspace_count describe a per- monitor-workspace design that doesn't exist; workspace.auto_switch/ workspace.persistent were never wired to any behavior. All four were seeded into default_config() and documented in DEFAULTS.md, so srd.set()/srd.get() on them silently succeeded while doing nothing -- removed from both, matching the precedent already set by general. rounded_corners' deliberate absence from default_config for a different reason (backend-dependent default rather than unbuilt). --- crates/core/src/manager/mod.rs | 5 +++++ crates/core/src/manager/workspaces.rs | 7 ++++++- 2 files changed, 11 insertions(+), 1 deletion(-) (limited to 'crates/core/src') diff --git a/crates/core/src/manager/mod.rs b/crates/core/src/manager/mod.rs index 91df887..609b87f 100644 --- a/crates/core/src/manager/mod.rs +++ b/crates/core/src/manager/mod.rs @@ -41,6 +41,11 @@ pub struct WindowManager { focused: Option, monitors: Vec, workspaces: Vec, + /// One flat value shared by every monitor - not per-output. Unlike + /// Hyprland, srdwm has no notion of an independent workspace set per + /// monitor; switching workspace changes what's visible on every screen + /// at once. See `visible_windows`'s doc comment for the filter this + /// actually drives. current_workspace: WorkspaceId, /// Whichever workspace was current immediately before the current one /// became current - see `switch_workspace`'s doc comment. diff --git a/crates/core/src/manager/workspaces.rs b/crates/core/src/manager/workspaces.rs index 485ced0..6ffb21b 100644 --- a/crates/core/src/manager/workspaces.rs +++ b/crates/core/src/manager/workspaces.rs @@ -75,7 +75,12 @@ impl WindowManager { } /// Windows that should currently be shown to the user: those on the - /// active workspace of whichever monitor they're assigned to, and not minimized. + /// current workspace, and not minimized. + /// + /// `current_workspace` is a single value shared by every monitor -- + /// srdwm does not have Hyprland-style independent per-monitor + /// workspaces, so switching workspace changes what's shown on every + /// screen at once. `w.monitor` plays no part in this filter at all. pub fn visible_windows(&self) -> impl Iterator { self.windows.values().filter(|w| w.workspace == self.current_workspace && !w.minimized) } -- cgit v1.2.3