diff options
| author | Craig Jennings <c@cjennings.net> | 2026-07-18 20:03:16 -0500 |
|---|---|---|
| committer | Craig Jennings <c@cjennings.net> | 2026-07-18 20:03:16 -0500 |
| commit | 98142bb495896c4084b2511f1f031e799c7f4b0e (patch) | |
| tree | 0fcb6aab8118734611a2927065cb15cfb477b7e1 | |
| parent | 6f156113823473d8827ed81da86f8db0bdabe19b (diff) | |
| download | archsetup-98142bb495896c4084b2511f1f031e799c7f4b0e.tar.gz archsetup-98142bb495896c4084b2511f1f031e799c7f4b0e.zip | |
docs: document single Dupre theme
Remove retired theme-switching guidance and Hudson references from active documentation.
| -rw-r--r-- | README.md | 4 | ||||
| -rw-r--r-- | assets/color-themes/dupre/dupre-palette.org | 12 | ||||
| -rw-r--r-- | docs/2026-06-10-tool-evaluation-criteria.org | 2 | ||||
| -rw-r--r-- | docs/design/2026-06-29-waybar-timer-module-spec.org | 11 | ||||
| -rw-r--r-- | docs/specs/2026-07-02-desktop-settings-panel-spec.org | 2 | ||||
| -rw-r--r-- | docs/specs/2026-07-07-maintenance-console-spec.org | 8 |
6 files changed, 14 insertions, 25 deletions
@@ -27,7 +27,7 @@ The provisioning step is resumable: it records progress as marker files, so an i - Builds suckless tools (dwm, dmenu, st, slock) and an Emacs config from configurable Git repos, compiled on a tmpfs RAM disk - Stow-managed dotfiles in a separate repo, split into `common/`, `dwm/`, `hyprland/`, and `minimal/` trees - That repo's `Makefile` carries the stow / restow / reset / unstow / import targets; the installer clones and stows it automatically -- Two-theme system (`dupre`, `hudson`) switchable with the `set-theme` script +- Dupre theme managed by the `set-theme` script - VM-based integration test harness (QEMU/KVM) that installs into a throwaway VM and validates the result - Logs everything to `/var/log/archsetup-*.log` @@ -132,7 +132,7 @@ This `archsetup` repo no longer carries the dotfiles itself — the in-repo `dot ### Theme system -Two themes ship in the dotfiles repo, `dupre` (default) and `hudson`. Switch with the `set-theme` script (installed via the `common` dotfiles). Theme files live under `~/.dotfiles/hyprland/.config/themes/<theme>/` and cover foot, fuzzel, waybar, dunst, hyprlock, and Xresources. +The Dupre theme ships in the dotfiles repo and is applied with the `set-theme` script (installed via the `hyprland` dotfiles). Its files live under `~/.dotfiles/hyprland/.config/themes/dupre/` and cover foot, fuzzel, waybar, dunst, hyprlock, and Xresources. ## Desktop Environments diff --git a/assets/color-themes/dupre/dupre-palette.org b/assets/color-themes/dupre/dupre-palette.org index cd4f26a..5df2778 100644 --- a/assets/color-themes/dupre/dupre-palette.org +++ b/assets/color-themes/dupre/dupre-palette.org @@ -202,24 +202,16 @@ Point-based configs (foot, fuzzel, dunst, Xresources) use 13pt. Waybar CSS uses | =hyprlock.conf= | Hyprlock screen | | =Xresources= | X11 apps / Emacs | -** Switching Themes +** Applying Dupre =set-theme= (=~/.local/bin/set-theme=) copies theme configs into place, applies Hyprland/hy3 colors via =hyprctl=, merges Xresources, and reloads waybar and dunst. #+begin_src sh set-theme dupre # apply dupre -set-theme --toggle # toggle between dupre and hudson -set-theme --pick # fuzzel picker set-theme --current # print current theme name #+end_src -Keybindings: =$mod+Y= toggles, =$mod+Shift+Y= opens picker. - -** Adding a New Theme - -1. Create =~/.config/themes/<name>/= with all seven config files -2. Add a case block in =set-theme= for Hyprland/hy3 runtime colors -3. The theme will appear automatically in =set-theme --list= and the fuzzel picker +Dupre is the single supported theme; it has no theme-toggle or picker keybinding. * Palette Image diff --git a/docs/2026-06-10-tool-evaluation-criteria.org b/docs/2026-06-10-tool-evaluation-criteria.org index f5fec34..be0a79a 100644 --- a/docs/2026-06-10-tool-evaluation-criteria.org +++ b/docs/2026-06-10-tool-evaluation-criteria.org @@ -14,7 +14,7 @@ A replacement tool earns adoption only when it beats the incumbent on a dimensio * Weighting criteria (compare on these) - Daily-use win: does it remove a real friction, or is it novelty? "Answers in one command what took a pipeline" (dust) beats "same answer, prettier" (gping). - Workflow fit: Emacs (dired, vterm, magit) and tmux already own many niches. A candidate duplicating them adds maintenance surface without adding capability (see: terminal tabs/splits, broot vs dired+zoxide). -- Theme-system fit: can set-theme drive it (INI/TOML include, runtime color escape, reload signal)? Tools that can't follow dupre/hudson stay second-class. +- Theme-system fit: can the Dupre apply path drive it (INI/TOML include, runtime color escape, reload signal)? Tools that cannot follow the desktop palette stay second-class. - Packaging: official repo > AUR > git build. Every step down adds update fragility to fresh installs. - Migration cost: config translation, muscle-memory retraining, installer changes. Cost scales with how load-bearing the incumbent is. diff --git a/docs/design/2026-06-29-waybar-timer-module-spec.org b/docs/design/2026-06-29-waybar-timer-module-spec.org index e8eecbe..4db4c8f 100644 --- a/docs/design/2026-06-29-waybar-timer-module-spec.org +++ b/docs/design/2026-06-29-waybar-timer-module-spec.org @@ -157,14 +157,11 @@ Update the =tests/waybar-collapse= base-set expectations to match (TDD the chang * CSS -Add =#custom-timer= plus the state classes to all three stylesheets. Keep the -*selectors and structure* parallel across the three (what the theme-drift test -checks); the actual color *values* are per-theme (dupre vs hudson) and differ by -design, so this is structural parity, not byte-identity. Confirm against the real -CSS files what the drift test compares before editing. +Add =#custom-timer= plus the state classes to the live and Dupre stylesheets. +Keep them byte-identical: the apply script copies Dupre over the live stylesheet. +Confirm against the real CSS files what the drift test compares before editing. - =hyprland/.config/waybar/style.css= - =hyprland/.config/themes/dupre/...= waybar css -- =hyprland/.config/themes/hudson/...= waybar css Colors: normal = foreground; =urgent= = a warning hue (reuse the sysmon warn/crit palette); =paused= = dimmed; =pomodoro-break= = a calmer accent. @@ -194,7 +191,7 @@ dotfiles branch =waybar-timer-module=: - =tests/wtimer/test_wtimer.py= (new) - =hyprland/.config/waybar/config= (module def + modules-right position) - =hyprland/.local/bin/waybar-collapse= (base-set) + =tests/waybar-collapse/...= (expectations) -- =hyprland/.config/waybar/style.css= + dupre + hudson waybar css (CSS) +- =hyprland/.config/waybar/style.css= + Dupre waybar css (CSS) archsetup (main, at the end): - this spec 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 50853f3..17fa0e6 100644 --- a/docs/specs/2026-07-02-desktop-settings-panel-spec.org +++ b/docs/specs/2026-07-02-desktop-settings-panel-spec.org @@ -136,7 +136,7 @@ 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, a theme/dupre-vs-hudson switch (theme-studio kin), volume or a +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. diff --git a/docs/specs/2026-07-07-maintenance-console-spec.org b/docs/specs/2026-07-07-maintenance-console-spec.org index 9810fe8..1044cfc 100644 --- a/docs/specs/2026-07-07-maintenance-console-spec.org +++ b/docs/specs/2026-07-07-maintenance-console-spec.org @@ -88,7 +88,7 @@ Temps, memory, and throttle re-read every ~3 s while visible; local probes every *Refresh tiers* (all engine-side, GUI subscribes): live group ~3 s panel-open + subpanel-visible; fast local ~30 s panel-open + post-action re-probe; hydration on open (fast reads first, process probes behind, sub-second perceived); network tier from the hourly timer cache, on-demand refresh only; *slow local tier* — probes whose cost class matches the network tier despite being local (full =pacman -Qkk=, measured 47 s on ratio; the disk top-consumers scan) ride the same hourly timer cache with age shown, on-demand refresh only, never in hydration or fast-local; closed-panel glyph fed by a ~30-min systemd user timer running =maint scan --glyph= to write the state file =waybar-maint= reads. Two user units ship with the package: =maint-scan.timer= (glyph) and =maint-net-scan.timer= (hourly network-tier + slow-local cache). -*Waybar wiring.* =custom/maint= replaces =custom/sysmon= in the modules list and config; glyph state file + SIGRTMIN signal refresh like =custom/ptt=. Gotcha (from the PTT build): waybar runs a *generated runtime config* — the module lands via =waybar-active-config= + SIGUSR2, not just a canonical config edit. Theme CSS mirrored in both themes (dupre, hudson). +*Waybar wiring.* =custom/maint= replaces =custom/sysmon= in the modules list and config; glyph state file + SIGRTMIN signal refresh like =custom/ptt=. Gotcha (from the PTT build): waybar runs a *generated runtime config* — the module lands via =waybar-active-config= + SIGUSR2, not just a canonical config edit. Theme CSS lives in Dupre and mirrors the live Waybar stylesheet. *Cross-links, not duplicates.* DNS/NetworkManager repair deep-links to the net panel's doctor; OPEN JOURNAL launches a terminal running =journalctl -p err -b= (the NET DOCTOR delegation pattern). @@ -229,7 +229,7 @@ Round-1 (verified live): every other assumed tool present; =arch-audit= is not. Round-1: the hourly network-tier/slow-local cache must survive reboots (else "no data" for up to an hour after boot) — =$XDG_RUNTIME_DIR= wrong for it. Resolved: added to the open config-paths decision; proposal now puts glyph state + cache under =~/.local/state/maint/=. ** DONE Panel-CSS "both themes" ambiguity -Round-1 (code fact): sibling panels load =themes/dupre/panel.css= hardcoded (=audio/gui.py:52-61=); hudson has no panel.css. Resolved: Phase 7 follows the sibling dupre-only panel-CSS convention; Phase 11 scopes both-themes CSS to the waybar glyph stylesheets. +Round-1 (code fact): sibling panels load =themes/dupre/panel.css= hardcoded (=audio/gui.py:52-61=). Resolved: Phase 7 follows that shared Dupre panel-CSS convention; Phase 11 scopes glyph CSS to the Dupre/live Waybar stylesheet pair. * Implementation phases @@ -254,7 +254,7 @@ DNS/NM reachability, firewall state (+ public-bind exposure naming when down), l =remedies.py= (full allowlisted table with =re_probe_ids= + running-% for long ops), =priv.py= verb table, =guard.py= live-update matcher (pure), curation writes (mark/unmark/clear/keep/expected), =maint fix <id> [--dry-run]=, =maint doctor clean|review= streaming an event feed (text wall in the terminal). Topgrade wrapper with =--disable git=. KILL's four guards. Argv-construction tests for every remedy; no execution. Splits naturally into 6a (remedies/priv/guard) + 6b (curation writes + doctor + CLI) if the session runs long — 6a alone leaves a working tree. ** Phase 7 — GUI shell -GTK4 window, faceplate, category selector row (lamps + fixable/watch splits), subpanel scaffolding, hydration tiers + refresh cadence (live/fast, visibility-gated like the audio meters), =MAINT_PANEL_FIXTURE= loading, panel CSS following the sibling convention (=themes/dupre/panel.css=, the shared panel stylesheet — hudson carries waybar CSS only, no panel.css). Renders real =status= data read-only — no levers yet. +GTK4 window, faceplate, category selector row (lamps + fixable/watch splits), subpanel scaffolding, hydration tiers + refresh cadence (live/fast, visibility-gated like the audio meters), =MAINT_PANEL_FIXTURE= loading, panel CSS following the sibling convention (=themes/dupre/panel.css=, the shared panel stylesheet). Renders real =status= data read-only — no levers yet. ** Phase 8 — GUI subpanels: storage, snapshots, packages, updates strip Evidence digests, armed per-item keys (orphan REMOVE/KEEP, pacnew MERGE, DELETE STALE, scrub with running-%), the Packages rotary band selector, updates strip with state-tiered border, UPDATE/TOPGRADE behind the arming guard, armed REBOOT on completion. @@ -266,7 +266,7 @@ Failed-unit roster keys, journal digest + MARK KNOWN lifecycle UI + OPEN JOURNAL The wall widget (lamp stream, date+time, inline results, running-%, HIDE/COPY, 3.5-entry cap, dark scrollbar), CLEAN UP / REVIEW & FIX wired through =doctor.py=, every armed key streaming, curation events logged, post-action re-probes visible. ** Phase 11 — Waybar glyph + timers -=indicator.py= + =waybar-maint=, =custom/maint= replacing =custom/sysmon= (canonical config + =waybar-active-config= runtime path + SIGUSR2), signal-driven refresh, =maint-scan.timer= + =maint-net-scan.timer= user units, glyph color tracks worst diagnostic from the state file; on battery hosts the module text is the live battery level (sysfs read per waybar interval, charging indicator, low-charge threshold feeding the diagnostic state) and any existing battery module retires. Glyph CSS lands in both theme waybar stylesheets (dupre, hudson). Retirement collateral in the same commit (Craig ruled 2026-07-07): =custom/maint= right-click re-homes the btop scratchpad (=pypr toggle monitor=); the =waybar-sysmon= + =sysmon-cycle= scripts and their suites (=tests/waybar-sysmon/=, =tests/sysmon-cycle/=) retire, and the =#custom-sysmon= CSS blocks come out of =waybar/style.css= and both themes. +=indicator.py= + =waybar-maint=, =custom/maint= replacing =custom/sysmon= (canonical config + =waybar-active-config= runtime path + SIGUSR2), signal-driven refresh, =maint-scan.timer= + =maint-net-scan.timer= user units, glyph color tracks worst diagnostic from the state file; on battery hosts the module text is the live battery level (sysfs read per waybar interval, charging indicator, low-charge threshold feeding the diagnostic state) and any existing battery module retires. Glyph CSS lands in the Dupre source and live Waybar stylesheet. Retirement collateral in the same commit (Craig ruled 2026-07-07): =custom/maint= right-click re-homes the btop scratchpad (=pypr toggle monitor=); the =waybar-sysmon= + =sysmon-cycle= scripts and their suites (=tests/waybar-sysmon/=, =tests/sysmon-cycle/=) retire, and the =#custom-sysmon= CSS blocks come out of =waybar/style.css= and Dupre. ** Phase 11b — Prototype fidelity pass (added 2026-07-08) Added mid-build from Craig's live-board review: phases 7-10 delivered E5's structure and behavior but rendered subpanel metrics as one-line list rows (the sibling panels' idiom) instead of the prototype's instrument-card grid; the per-phase screenshot checks verified structure, not presentation. Scope: card-grid subpanels (4-up metric cards — big-number value, caption line, progress bars, radial gauges for scrub cadence and NVMe wear, status chips, corner lever key), two-row selector tiles with compact count chips, subpanel attention/ok/fixable/watch header line, evidence digests as full-width rosters under the grid. Engine and viewmodel contracts unchanged; =gui.py= layout + =panel.css=. Sequenced before Phase 12 so the AT-SPI smoke targets the final layout. Verification is a pixel-level comparison against the settled E5 render (headless Chrome), not structural spot checks. |
