diff options
Diffstat (limited to 'docs/specs/2026-07-02-desktop-settings-panel-spec.org')
| -rw-r--r-- | docs/specs/2026-07-02-desktop-settings-panel-spec.org | 107 |
1 files changed, 78 insertions, 29 deletions
diff --git a/docs/specs/2026-07-02-desktop-settings-panel-spec.org b/docs/specs/2026-07-02-desktop-settings-panel-spec.org index 17fa0e6..3aef647 100644 --- a/docs/specs/2026-07-02-desktop-settings-panel-spec.org +++ b/docs/specs/2026-07-02-desktop-settings-panel-spec.org @@ -14,6 +14,7 @@ :PROPERTIES: :ID: fb7eec22-a214-4568-82c4-903612f4832f :END: +- [2026-07-19 Sun] DRAFT — folded Craig's control-set decisions (home->archsetup handoff): added night-light, DND, lock/suspend, power profile, and scenes to the controls table; recorded volume and theme as out-of-scope with reasons; pulled the format pickers into a separate display-format sibling spec (stub filed). The "few other things" scoping decision and the scenes decision are now closed. One decision stays open — the wallpaper manager's shape (row-that-opens-a-sub-view vs its own sub-spec), to resolve at spec-review. UI prototyping (ui-prototyping rule: research -> 5 directions -> iterate) is not done yet and is the gate before READY. - [2026-07-04 Sat] DRAFT — all four decisions resolved by Craig (dim + airplane collapse into the panel, touchpad + caffeine stay on the bar; Super+Shift+G keybind; code in dotfiles settings/ beside net/; 5% brightness floor). The four collapse/keybind/location/floor decisions are closed; one open scoping question remains ("few other things" — see Decisions) before a spec-review can flip it READY. - [2026-07-03 Fri] DRAFT update — from the waybar/panel-family design discussion: adopt the instrument-console faceplate aesthetic net + bt @@ -52,7 +53,8 @@ gathers them. 1. One panel with every desktop toggle + slider: auto-dim, idle/caffeine, touchpad, mouse, airplane (laptop-only), screen brightness, keyboard - backlight. + backlight, night-light, Do Not Disturb, power profile, lock/suspend + actions, scenes, and a wallpaper manager (see the controls table). 2. Conditional rows appear only when the hardware/context applies (mouse present, trackpad present, battery present) — reuse the detection the airplane/touchpad indicators already do. @@ -84,27 +86,47 @@ gathers them. ** Controls and their backings -| Control | Backing | -|--------------------+----------------------------------------------| -| Auto-dim toggle | hyprctl decoration:dim_inactive (dim-toggle) | -|--------------------+----------------------------------------------| -| Idle / caffeine | hypridle start/stop (caffeine-toggle) | -|--------------------+----------------------------------------------| -| Touchpad toggle | toggle-touchpad + touchpad-state file | -|--------------------+----------------------------------------------| -| Mouse toggle | same mechanism, mouse-state file | -|--------------------+----------------------------------------------| -| Airplane mode | airplane-mode script (laptop-only row) | -|--------------------+----------------------------------------------| -| Screen brightness | brightnessctl (backlight class), slider + % | -|--------------------+----------------------------------------------| -| Keyboard backlight | brightnessctl (kbd_backlight class), slider | -|--------------------+----------------------------------------------| +| Control | Kind | Backing | +|--------------------+----------+----------------------------------------------| +| Auto-dim toggle | toggle | hyprctl decoration:dim_inactive (dim-toggle) | +|--------------------+----------+----------------------------------------------| +| Idle / caffeine | toggle | hypridle start/stop (caffeine-toggle) | +|--------------------+----------+----------------------------------------------| +| Touchpad toggle | toggle | toggle-touchpad + touchpad-state file | +|--------------------+----------+----------------------------------------------| +| Mouse toggle | toggle | same mechanism, mouse-state file | +|--------------------+----------+----------------------------------------------| +| Airplane mode | toggle | airplane-mode script (laptop-only row) | +|--------------------+----------+----------------------------------------------| +| Screen brightness | slider | brightnessctl (backlight class), slider + % | +|--------------------+----------+----------------------------------------------| +| Keyboard backlight | slider | brightnessctl (kbd_backlight class), slider | +|--------------------+----------+----------------------------------------------| +| Night light / | toggle | color-temperature shift (candidate: | +| color temperature | | hyprsunset; confirm the tool at build) | +|--------------------+----------+----------------------------------------------| +| Do Not Disturb | toggle | dunstctl set-paused (pause notifications) | +|--------------------+----------+----------------------------------------------| +| Power profile | selector | powerprofilesctl (performance / balanced / | +| | | power-saver, three-way) | +|--------------------+----------+----------------------------------------------| +| Lock / suspend | actions | hyprlock / systemctl suspend (momentary | +| | | buttons, not stateful toggles) | +|--------------------+----------+----------------------------------------------| +| Scenes / profiles | composite| one control that flips several toggles at | +| | | once: Focus, Presentation, Battery-saver, | +| | | Night (see the Scenes decision below) | +|--------------------+----------+----------------------------------------------| +| Wallpaper manager | sub-view | still-open shape (row-that-opens-a-sub-view | +| | | vs its own sub-spec) — resolve at spec-review| +|--------------------+----------+----------------------------------------------| Slider changes apply live (throttled) and read back the actual level after apply — verify-everything. Toggles re-read their source of truth after firing, same as the bar indicators do, and the bar modules get their refresh -signals so both surfaces agree. +signals so both surfaces agree. The lock/suspend buttons are momentary +actions with no persistent state to reflect. A scene reads back each toggle it +sets and reports the composite as applied only when every member verified. ** Open/close behavior @@ -130,23 +152,50 @@ Resolved (Craig, 2026-07-04): dotfiles =settings/= sibling to =net/= (same src-l CLOSED: [2026-07-04 Sat] Resolved (Craig, 2026-07-04): 5% floor on the brightness slider, so a dark-room drag can't black the screen out and lock you out. brightnessctl's 0-100% range clamps to a 5% minimum. -** TODO What are the "few other things" beyond the toggles? -The 2026-07-03 discussion named consolidating the toggle buttons "and a few -other things" into this panel, but the extras weren't enumerated. Current -control list (above): auto-dim, idle/caffeine, touchpad, mouse, airplane, -screen brightness, keyboard backlight. Candidates raised or adjacent — -confirm which belong here vs the audio panel vs the bar: night-light / color -temperature, volume or a -master-mute mirror (or leave all audio to the audio panel), a -notifications/do-not-disturb toggle (dunst), lock/suspend actions. Craig to -name the set. +** DONE What are the "few other things" beyond the toggles? +CLOSED: [2026-07-19 Sun] +Resolved (Craig, 2026-07-19, via the home->archsetup handoff). Beyond the seven +base toggles/sliders, the panel adds: night-light / color temperature; Do Not +Disturb (dunst); lock / suspend quick actions; power profile +(performance/balanced/saver); and scenes/profiles (see the Scenes decision). +Plus the wallpaper manager already confirmed 2026-07-04 (its shape stays open, +see the Wallpaper decision). The controls table above now carries all of them. + +OUT of this panel, with reasons: volume / master-mute stays with the audio +panel (this panel does not mirror it — one owner per control); theme light/dark +goes to the separate theme-studio task, not here. + +Format pickers (time/date/weather display format) are pulled out entirely into +their own future sibling spec. The real problem there is a single source of +truth — many programs store their own format, so the design question is where +the canonical time/date/weather format lives and how every consumer (clock +module, weather chip) reads it without drift. Tracked as a stub: +[[file:2026-07-19-display-format-single-source-of-truth-spec.org][display-format single-source-of-truth]]. *** 2026-07-04 Sat — Craig's input (roam capture): the set includes a wallpaper manager Confirmed the panel gathers the mouse/trackpad toggle, a no-sleep (idle-inhibit) toggle, and the auto-dim toggle, and adds a *wallpaper manager* (this is where the displaced waypaper functionality lands — see the media/keybind change that freed Super+Shift+P). The wallpaper manager needs its own depth: - take a number of directories to look in; - switch the wallpaper with the change persisting across sessions; - switch between two pictures at sunup / sundown (a day/night pair). -That last one implies a sun-time source (a lat/long or a sunrise/sunset lookup). The wallpaper manager is sizable enough it may want its own sub-spec rather than a single panel row; decide during the spec-review whether it's a row that opens a sub-view or a separate panel. Remaining "few other things" candidates above (night-light, theme switch, DND, lock/suspend) still await Craig's yes/no. +That last one implies a sun-time source (a lat/long or a sunrise/sunset lookup). + +** DONE Scenes / profiles — one control that flips several toggles at once +CLOSED: [2026-07-19 Sun] +Resolved (Craig, 2026-07-19): the panel offers named scenes that set several +controls in one action — Focus, Presentation, Battery-saver, Night. Scenes are +the payoff of consolidating every desktop control in one panel. The exact +toggle set each scene applies is a build-time detail (design it against the +control table); the spec commitment is that scenes exist and each verifies +every member it sets (see Controls note above). + +** DONE Wallpaper manager — a panel row that opens a sub-view, or its own sub-spec? +CLOSED: [2026-07-19 Sun] +Resolved (Craig, 2026-07-19): a row in the panel that opens a sub-view, kept +inside the one panel (the "consolidate everything" thesis). The wallpaper +manager's depth (directories to scan, persistent selection, a day/night +sunup/sundown pair needing a sun-time source) lives in that sub-view, not a +separate surface. Sun-time source (lat/long or sunrise/sunset lookup) is a +build detail for the sub-view. * Implementation phases |
