aboutsummaryrefslogtreecommitdiff
path: root/docs/specs
diff options
context:
space:
mode:
Diffstat (limited to 'docs/specs')
-rw-r--r--docs/specs/2026-07-02-desktop-settings-panel-spec.org107
-rw-r--r--docs/specs/2026-07-19-display-format-single-source-of-truth-spec.org63
2 files changed, 141 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
diff --git a/docs/specs/2026-07-19-display-format-single-source-of-truth-spec.org b/docs/specs/2026-07-19-display-format-single-source-of-truth-spec.org
new file mode 100644
index 0000000..02e043c
--- /dev/null
+++ b/docs/specs/2026-07-19-display-format-single-source-of-truth-spec.org
@@ -0,0 +1,63 @@
+#+TITLE: Display-Format Single Source of Truth
+#+AUTHOR: Craig Jennings
+#+DATE: 2026-07-19
+#+TODO: TODO | DONE
+#+TODO: DRAFT READY DOING | IMPLEMENTED SUPERSEDED CANCELLED
+
+* DRAFT Display-Format Single Source of Truth
+:PROPERTIES:
+:ID: ae247f1a-e48f-4d5e-8556-dd1f0aa34a69
+:END:
+- [2026-07-19 Sun] DRAFT — stub. Split out of the desktop-settings panel spec (Craig, 2026-07-19): format pickers do not belong in that panel. Filed to hold the problem until it gets its own design pass. Not started.
+
+* Status
+:PROPERTIES:
+:ID: a76a41df-85c2-4137-9ba5-eff04db529a5
+:END:
+- [2026-07-19 Sun] DRAFT — stub only. Problem framed below; goals, decisions, and phases to be developed when Craig picks this up.
+
+* Metadata
+
+| Field | Value |
+|--------+-----------------------------------------|
+| Status | draft |
+|--------+-----------------------------------------|
+| Owner | Craig Jennings |
+|--------+-----------------------------------------|
+| Repo | dotfiles |
+|--------+-----------------------------------------|
+| Kin | desktop-settings panel (parent), clock |
+| | module, weather chip (consumers) |
+|--------+-----------------------------------------|
+
+* Problem
+
+Display-format settings for time, date, and weather are stored independently by
+each program that renders them. The clock module has its own format ring, the
+weather chip its own, and any future consumer would carry a third. There is no
+canonical place a user sets "this is how I want the time shown" that every
+surface reads.
+
+The design problem is a single source of truth: where the canonical
+time/date/weather format lives, and how every consumer reads it without drift.
+Solve that first; the pickers (the UI that edits the format) are downstream of
+where the value is stored.
+
+This was pulled out of the desktop-settings panel spec
+([[file:2026-07-02-desktop-settings-panel-spec.org][desktop-settings panel]]) on
+2026-07-19 — format editing does not belong in that panel, and the real work is
+the storage/consumption model, not a picker widget.
+
+* Goals
+
+(To be developed. At minimum: a canonical store for time/date/weather format; a
+read path every consumer uses; a migration for the existing per-consumer
+formats.)
+
+* Decisions
+
+(None yet — Craig has not started this.)
+
+* Implementation phases
+
+(To be developed once the goals and the storage model are settled.)