aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCraig Jennings <c@cjennings.net>2026-06-24 17:37:11 -0400
committerCraig Jennings <c@cjennings.net>2026-06-24 17:37:11 -0400
commit400a2dd755da39ff1bb4890f15cdc3b7b2fadfeb (patch)
treea18308d5b7a1844227cfa0c0f51b4d4f565d520e
parentb22acf76116bbbbdaa52920faf4c0a56bebb4155 (diff)
downloadarchsetup-400a2dd755da39ff1bb4890f15cdc3b7b2fadfeb.tar.gz
archsetup-400a2dd755da39ff1bb4890f15cdc3b7b2fadfeb.zip
docs(todo): reconcile open work via audit, review, and intake
Closed the three resolved tool-evaluation tasks into actionable work: adopt the modern CLI tools, migrate the terminal from foot to ghostty, and keep nautilus over yazi. Closed the org-capture popup task as sized to the scratchpad. Demoted nine undated high-priority sub-tasks to B per the priority scheme. Folded the wlogout laptop-test task into the rectangular-buttons task and tagged the whole waybar cluster :waybar: so it filters as a unit. Reviewed the seven oldest-unreviewed tasks and kept all seven. Filed two new waybar tasks (calendar-hover highlight, idle-inhibitor rename) and folded a timer/stopwatch/alarm scope expansion into the existing waybar timer task.
-rw-r--r--todo.org117
1 files changed, 89 insertions, 28 deletions
diff --git a/todo.org b/todo.org
index fa6d360..a6058ee 100644
--- a/todo.org
+++ b/todo.org
@@ -32,22 +32,30 @@ Disabled 2026-06-12 (bind and cycle entry points removed; Super+Shift+S reassign
The support machinery was deliberately kept for this task: =layout-navigate= and =layout-resize= retain their scrolling branches, =waybar-layout= still renders the scrolling state, and the unbound legacy =cycle-layout= script still lists it. Re-enabling is two lines: add =scrolling= back to =LAYOUTS= in =layout-cycle= and restore a direct-jump bind (the old chord is taken now — pick a new one). The =tests/layout-cycle= suite pins the disabled state and will go red on re-enable, which is the reminder to update it.
-** TODO [#C] Waybar indicators unevenly spaced :quick:solo:
+** TODO [#C] Waybar indicators unevenly spaced :quick:solo:waybar:
:PROPERTIES:
:LAST_REVIEWED: 2026-06-09
:END:
The right-side module icons don't sit at even intervals — spacing reads as inconsistent across the group. Tune the per-module margin/padding in =dotfiles/hyprland/.config/waybar/style.css= so the icons are evenly distributed. Noticed 2026-05-21 after adding the airplane indicator.
** TODO [#C] Wlogout exit-menu buttons are rectangular, not square
:PROPERTIES:
-:LAST_REVIEWED: 2026-06-09
+:LAST_REVIEWED: 2026-06-24
:END:
The wlogout exit menu renders its buttons taller than they are wide on velox, so the cells read as vertical rectangles instead of squares. They render square (centered) correctly on ratio, so this is a per-host / resolution difference, not a flat bug. Fix the button sizing in the wlogout style (=~/.dotfiles/hyprland/.config/wlogout/style.css=) so each cell is square on both hosts. Noticed 2026-05-21. Related: the [#D] VERIFY about wlogout sizing across displays.
+The wlogout config uses fixed pixel margins, which is the likely reason sizing differs across the two displays — adjusting them for the laptop screen is part of the fix (folded in from the former "Test wlogout menu on laptop" VERIFY, 2026-06-24).
+
Add a regression test so the square-cell fix doesn't silently break on a resolution change: assert the rendered (or computed) wlogout button cells are square across ratio's and velox's resolutions. Dropped :quick: — the cross-host test pushes this past a spare-moment fix.
** TODO [#C] Zoom launches in a tiny window :bug:hyprland:
+:PROPERTIES:
+:LAST_REVIEWED: 2026-06-24
+:END:
From the roam inbox: Zoom opens at a tiny size. Needs diagnosis (HiDPI scaling vs a window rule vs XWayland) and live verification with Zoom actually running — held for a Craig-driven debug pass, not a blind fix.
** TODO [#C] Window focus lost when unhiding stashed windows :bug:hyprland:
+:PROPERTIES:
+:LAST_REVIEWED: 2026-06-24
+:END:
From the roam inbox: hiding a window (e.g. the org-capture popup) then unhiding it should leave the unhidden window focused, but another window typically takes focus. Also =ctrl+j/k= (layout-navigate) can't reach the unhidden window afterward — it should always reach any visible window except the waybar. Involves stash-restore + layout-navigate; needs interactive reproduction with Craig.
** TODO [#B] Guard against live mesa/hyprland/wayland-runtime updates :hyprland:
@@ -97,6 +105,9 @@ Parked at Craig's call (not worth deeper investigation now). If it resurfaces, t
** TODO [#B] Pocketbook finish-or-cancel decision :pocketbook:
SCHEDULED: <2026-08-23 Sun>
+:PROPERTIES:
+:LAST_REVIEWED: 2026-06-24
+:END:
Decide whether to finish the pocketbook app or close and cancel the project. Removed from the waybar setup 2026-06-23 (the org-capture popup covers quick reminders and text for now), so it's out of daily use — this is the checkpoint to commit to it or retire it. Backlog above: [[*Pocketbook development backlog][Pocketbook development backlog]].
** TODO [#B] Provision Eask in archsetup :tooling:eask:
@@ -122,7 +133,13 @@ A custom waybar module providing three time-keeping functions, surfaced in the b
Implementation notes (to flesh out when picked up): waybar =custom= module(s) with =exec= polling or a persistent =exec= script emitting JSON; click actions to start/pause/reset; a small state file under =~/.local/state= or =~/.local/var=. Lives in the hyprland tier (=dotfiles/hyprland/.config/waybar/= + a backing script in =hyprland/.local/bin/=). TDD the backing script per testing.md.
-** TODO [#B] Collapsible waybar sides :waybar:
+*** 2026-06-24 Wed @ 17:32:37 -0400 Scope expansion from roam capture (folded duplicate)
+A roam-inbox capture asked for the same widget and expands the scope, so folding it in here rather than duplicating:
+- *One panel, mode-selectable* — a single component where you choose timer / stopwatch / alarm; the icon changes to reflect the selected mode.
+- *Stopwatch* — a count-up (the third function alongside the alarm/timer/pomodoro above), hover shows start time ("Stopwatch started: 12:22pm").
+- Hover text per mode: timer "Timer: 5 min", alarm "Alarm: 12:15pm", stopwatch "Stopwatch started: 12:22pm".
+- *Multiple simultaneous* — several timers/alarms/stopwatches set and displayed at once, in one panel.
+- Deliverable includes proposing a few panel designs and recommending one before building.
:PROPERTIES:
:LAST_REVIEWED: 2026-06-09
:END:
@@ -157,7 +174,7 @@ Implementation notes: backing scripts in the dotfiles repo (hyprland tier); nmcl
** TODO [#B] Desktop-settings dropdown panel :waybar:
:PROPERTIES:
-:LAST_REVIEWED: 2026-06-09
+:LAST_REVIEWED: 2026-06-24
:END:
One waybar dropdown gathering the desktop toggles and sliders into a single settings panel, opened from a gear/settings glyph on the bar. Incorporate:
- *Auto-dim* toggle (the =custom/dim= feature just shipped — fold in here, or keep the standalone indicator and mirror it).
@@ -165,7 +182,7 @@ One waybar dropdown gathering the desktop toggles and sliders into a single sett
- *Keyboard-backlight* brightness slider (brightnessctl on the kbd_backlight class).
- *Mouse* enable/disable toggle — shown only when a mouse is connected.
- *Trackpad* enable/disable toggle — shown only when a trackpad is connected (mirror =toggle-touchpad= / =touchpad-auto=).
-- *Idle inhibitor* (the existing =idle_inhibitor= module).
+- *Idle inhibitor* (the =custom/idle= module that replaced the built-in =idle_inhibitor= 2026-06-24 — toggles the hypridle daemon, state-synced icon).
- *Airplane mode* (the existing =airplane-mode= toggle; laptop-only).
The conditional rows (mouse, trackpad, airplane) appear only when their hardware/context applies — reuse the laptop/device detection the airplane and touchpad indicators already do.
@@ -262,21 +279,21 @@ After regenerating, update the live =~/.emacs.d/calendar-sync.local.el= (now own
*** 2026-05-20 Wed @ 12:09:32 -0500 Scrubbed the calendar secret from git history
=dotfiles/common/.emacs.d/calendar-sync.local.el= (private Google/Proton/DeepSat ical URLs, added in =500b1f5= for stow distribution) was discovered while folding tmux-util into stow. Sent the file back to the emacs project's inbox, =git rm='d it, then =git filter-repo --invert-paths --path= purged it from all 29 affected commits. Force-pushed (=0921e4d...618e6cc=, with lease) and ran =reflog expire= + =gc --prune=now= on the bare repo at =/var/git/archsetup.git=. Verified: the file is in zero commits, the secret tokens return zero matches across all history, and =500b1f5= / =0921e4d= are unreachable on both local and remote. Rotation of the URLs tracked as the sibling TODO above. This also proves =filter-repo= works cleanly here — relevant precedent for the broader [[*Scrub git history of secrets (or start fresh)][history-scrub task]] below (the 5 credential files are still in history).
-*** TODO [#A] Remove/template personal information from scripts
+*** TODO [#B] Remove/template personal information from scripts
- =archsetup= lines 2-3: personal email and website in header
- =archsetup= lines 141-146: hardcoded =git.cjennings.net= repository URLs — make configurable via conf
- =scripts/post-install.sh=: personal git repos and server URLs (the old =scripts/gitrepos.sh= was consolidated into this script in =dae7659=, so its personal =git.cjennings.net= clone targets now live here)
- =init= line 8: hardcoded password =welcome=
-*** TODO [#A] Scrub git history of secrets (or start fresh)
+*** TODO [#B] Scrub git history of secrets (or start fresh)
Even after removing files, secrets remain in git history.
Options: =git filter-repo= to rewrite history, or start a fresh repo for the GitHub remote.
Recommend: fresh repo for GitHub (keep cjennings.net remote with full history).
-*** TODO [#A] Remove device-specific configuration :quick:
+*** TODO [#B] Remove device-specific configuration :quick:
=archsetup= lines 1458-1463: Logitech BRIO webcam udev rule — move to optional/configurable section.
-*** DOING [#A] Add README.md for GitHub
+*** DOING [#B] Add README.md for GitHub
Project description, features, requirements, installation instructions,
configuration guide (archsetup.conf), security considerations,
contributing guidelines (or separate CONTRIBUTING.md), and license.
@@ -287,7 +304,7 @@ Drafted =README.md= at repo root, modeled on =~/code/chime/README.org=. First pa
*** 2026-05-19 Tue @ 01:54:29 -0500 Added GPL-3 LICENSE file at repo root
GPL-3 chosen. Canonical GPLv3 text landed at =LICENSE= on 2026-05-11 (commit =f80e664=). README already links to it. SPDX/license headers across source files (or a NOTICE file) split out as a new sub-task below for the eventual public release.
-*** TODO [#A] Add SPDX/license headers to source files :quick:
+*** TODO [#B] Add SPDX/license headers to source files :quick:
For a real GPL-3 release on GitHub, every source file should carry an SPDX-License-Identifier header (or the repo should ship a NOTICE file naming the license + contributors). Not blocking — the =LICENSE= file at root is what GitHub needs. Worth doing once the credentials-cleanup work for open-sourcing actually ships. Light lift: pick a header template, sweep the install script + scripts/ + dotfile scripts.
*** 2026-06-09 Tue @ 19:21:36 -0500 Made claude-code install optional
@@ -324,7 +341,7 @@ Sites converted (the line numbers in the original task body were stale — actua
The helper is defined before the top-level =--fresh= handler (which runs at load time, before the logging helpers exist), so it carries no =error_warn= dependency and reports refusals to stderr itself. The two in-function sites keep their existing =|| error_warn= / =|| error_fatal= handling.
Tests: =tests/safe-rm-rf/test_safe_rm_rf.py= sources the real function out of the script and exercises Normal/Boundary/Error cases (13 tests) against real temp dirs. =make test-unit= green (61 tests), =bash -n= clean, no new shellcheck warnings.
-*** TODO [#A] Standardize boolean comparison style :quick:
+*** TODO [#B] Standardize boolean comparison style :quick:
Mixed =[ "$var" = "true" ]= vs =$var= evaluation — pick one pattern.
*** 2026-05-26 Tue @ 15:27:09 -0500 eval task moot — the line-434 eval is gone, the survivor is deliberate
@@ -438,6 +455,9 @@ Root cause was in =retry_install=: =last_exit_code=$?= ran AFTER =if eval ...; t
Auto-create post-install fix scripts for failed packages - makes failures actionable
** TODO [#B] Review undeclared ratio packages for installer inclusion
+:PROPERTIES:
+:LAST_REVIEWED: 2026-06-24
+:END:
Triggered by the 2026-06-14 =make package-diff= run on ratio: 62 packages are installed but not declared in archsetup. Stripped of the structural buckets — pacstrap base/boot/kernel (base, linux*, grub, efibootmgr, sudo, btrfs-progs, fwupd, logrotate, ex-vi-compat, linux-lts-strix, zram-generator), the =make deps= VM set (qemu-full, virt-manager, virt-viewer, libguestfs, bridge-utils, dnsmasq, archiso), and the yay bootstrap — these 40 remain. Check the ones to add to the installer, then rerun =make package-diff= to confirm they clear.
Some entries are libraries likely pulled in as dependencies (blas-openblas, openblas, eigen, tk, lib32-openal, pkcs11-helper, gtk4-layer-shell, webkit2gtk, sane, freerdp, rust-bindgen) — check those only if you want them declared explicitly rather than left to dependency resolution.
@@ -488,9 +508,9 @@ Some entries are libraries likely pulled in as dependencies (blas-openblas, open
:LAST_REVIEWED: 2026-06-13
:END:
The diff engine now exists (=scripts/package-inventory= / =make package-diff=), so what remains here is the cadence, not the tooling: a scheduled prompt to run the diff and act on it. Subtasks 1-2 are the recurring human judgment the engine feeds; subtask 3 is the automation to schedule it.
-*** TODO [#A] For packages in archsetup but not on system: determine if still needed
-*** TODO [#A] For packages on system but not in archsetup: decide add or remove
-*** TODO [#A] Schedule monthly package diff review
+*** TODO [#B] For packages in archsetup but not on system: determine if still needed
+*** TODO [#B] For packages on system but not in archsetup: decide add or remove
+*** TODO [#B] Schedule monthly package diff review
** TODO [#B] Complete security education within 3 months
:PROPERTIES:
@@ -619,6 +639,9 @@ Parse package warnings and repo metadata to catch upcoming deprecations proactiv
Identify attack vectors, what's mitigated, what remains
** TODO [#C] Re-check python-lyricsgenius --skipinteg workaround :solo:
+:PROPERTIES:
+:LAST_REVIEWED: 2026-06-24
+:END:
=archsetup:2403= installs =python-lyricsgenius= with =--mflags --skipinteg=, skipping makepkg integrity + PGP checks — a workaround for an expired-signature issue upstream (surfaced by the 2026-06-23 --noconfirm audit). Periodically test whether the upstream issue has cleared: if a plain =aur_install python-lyricsgenius= builds without complaint, drop the =--skipinteg= workaround. Removal needs a real AUR build to confirm, so it isn't a blind change.
** TODO [#B] Test each modernization thoroughly before replacing
@@ -679,23 +702,39 @@ Priority C because snapshot-based testing meets current needs
:END:
Practical guidelines for working in public spaces
-** VERIFY [#C] Evaluate modern CLI tool replacements
+** TODO [#C] Install adopted modern CLI tools :tooling:solo:
:PROPERTIES:
-:LAST_REVIEWED: 2026-06-10
+:LAST_REVIEWED: 2026-06-24
:END:
-Research done 2026-06-10, adoption decisions pending. Full report: [[file:docs/2026-06-10-modern-cli-tools-evaluation.org][docs/2026-06-10-modern-cli-tools-evaluation.org]]. Recommendation: adopt bat, dust, hyperfine, tealdeer, doggo (all in extra, all actively maintained); optional xh/jless/sd/ouch; nothing already-adopted has been superseded. Say which to install and I'll add them to archsetup + the machines.
+Decision (Craig, 2026-06-24): adopt all five recommended tools — =bat=, =dust=, =hyperfine=, =tealdeer=, =doggo= (all in extra). Add them to archsetup's package list and install on both machines. Optional candidates (=xh=/=jless=/=sd=/=ouch=) declined for now. Full evaluation: [[file:docs/2026-06-10-modern-cli-tools-evaluation.org][docs/2026-06-10-modern-cli-tools-evaluation.org]].
+
+- Add the five to the appropriate pacman package section in =archsetup=.
+- =pacman -S bat dust hyperfine tealdeer doggo= on velox + ratio.
+- =bat=: set =BAT_THEME= to match the dupre palette once installed.
+- =tealdeer=: run =tldr --update= to seed the cache after install.
-** VERIFY [#C] Evaluate terminal emulator alternatives
+** TODO [#B] Migrate terminal emulator from foot to ghostty :tooling:
:PROPERTIES:
-:LAST_REVIEWED: 2026-06-10
+:LAST_REVIEWED: 2026-06-24
:END:
-Research done 2026-06-10, your read pending. Full report: [[file:docs/2026-06-10-terminal-emulator-evaluation.org][docs/2026-06-10-terminal-emulator-evaluation.org]]. Recommendation: stay with foot — it wins on latency, ties on Wayland purity, fits the theme system, and stays healthy (1.26.0, Mar 2026). ghostty is the only real challenger (and the original ligature motivation favors it — foot still doesn't do ligatures), so the open question is whether ligatures matter enough to trade foot's latency edge. wezterm is effectively unmaintained (no release since Feb 2024).
+Decision (Craig, 2026-06-24): switch from foot to ghostty. Drivers: ligatures (foot won't add them) and kitty-graphics + sixel image support (foot is sixel-only, no kitty-graphics plans). ghostty is pure-Wayland on Hyprland, declarative config that fits the theme system, runtime config reload (keybind / SIGUSR2 since 1.2). Trade-off accepted: slightly higher input latency than foot. Already in use as Emacs's terminal renderer, so the config + rendering are familiar and the 06-18 tmux theme was tuned against that surface. Full evaluation: [[file:docs/2026-06-10-terminal-emulator-evaluation.org][docs/2026-06-10-terminal-emulator-evaluation.org]].
+
+Migration scope:
+- archsetup: add =ghostty= to the package list; decide whether to keep =foot= installed as a fallback or drop it.
+- dotfiles: port =foot.ini= → ghostty config (flat key=value). The shared foot.ini sets no font (per-host via =host.ini= include) — replicate that per-host font split for ghostty.
+- Themes: the dupre/hudson =themes/<name>/= dirs hold foot configs; add ghostty theme files and teach =set-theme= to write + reload the ghostty config. Watch the reload-clobbers-OSC-10/11 bug (ghostty #2795) when wiring runtime theme switch.
+- hyprland.conf: default-terminal keybind, pyprland scratchpad terminals, and any other =foot= references → ghostty.
+- Verify on velox + ratio: ligatures render, latency acceptable in tmux+vterm use, dupre theme correct, sixel/kitty-graphics previews work.
-** VERIFY [#C] Review file manager options for Wayland
+** DONE [#C] Review file manager options for Wayland
+CLOSED: [2026-06-24 Wed]
+Decision (Craig, 2026-06-24): keep nautilus only; skip yazi. File management lives in Emacs dired plus the Super+F dirvish popup, so a TUI file manager has no daily user here. ranger was already ruled out (frozen upstream). Full evaluation: [[file:docs/2026-06-10-file-manager-evaluation.org][docs/2026-06-10-file-manager-evaluation.org]]. Follow-on surfaced: nautilus needs dark theming (filed as its own task).
+
+** TODO [#B] Theme nautilus to a dark theme :bug:solo:
:PROPERTIES:
-:LAST_REVIEWED: 2026-06-10
+:LAST_REVIEWED: 2026-06-24
:END:
-Research done 2026-06-10, adoption call pending. Full report: [[file:docs/2026-06-10-file-manager-evaluation.org][docs/2026-06-10-file-manager-evaluation.org]]. Recommendation: keep nautilus (only candidate that's Wayland-native, libadwaita-dark native, and actively developed); add yazi as the Wayland TUI (v26.5.6, monthly releases, sixel previews work in foot with zero scripting, zoxide built in — it has matured substantially since the problematic 2026-02 try). ranger upstream is effectively frozen (still 1.9.4, 700+ open issues), so porting it to the Wayland machines is the one option the evidence rules out. Original body's history preserved in git.
+nautilus renders blindingly white (Craig, 2026-06-24). It's a GTK4/libadwaita app, so it ignores the GTK theme name (Adwaita-dark) and instead follows the system color-scheme preference =org.gnome.desktop.interface color-scheme=. Likely fix: set =color-scheme = 'prefer-dark'= via the dconf block archsetup already writes (the GNOME-interface dconf settings added for the portal-gtk timeout), then apply it live (=gsettings set org.gnome.desktop.interface color-scheme prefer-dark=). Investigate whether the existing dconf db already sets this and why nautilus isn't picking it up. Apply on velox + ratio, add to archsetup so fresh installs get dark by default. Verify nautilus opens dark.
** TODO [#C] Review current tool pain points annually
:PROPERTIES:
@@ -726,9 +765,9 @@ animation = fade, 1, 2, default
animation = layers, 1, 2, default, fade
#+end_src
-** VERIFY [#D] Test wlogout menu on laptop
-Test wlogout exit menu on laptop to verify sizing works on different display.
-Current config uses fixed pixel margins - may need adjustment for laptop screen.
+** CANCELLED [#D] Test wlogout menu on laptop
+CLOSED: [2026-06-24 Wed]
+Merged into the "Wlogout exit-menu buttons are rectangular, not square" task ([#C]) — same effort (per-host wlogout button sizing across velox/ratio). The fixed-pixel-margins hint was folded into that task's body.
** TODO [#D] Parse and improve AUR error reporting
Parse yay errors and provide specific, actionable fixes instead of generic error messages
@@ -777,9 +816,13 @@ What we're verifying: the physical keychord opens a floating Dirvish popup; open
- Press Super+Shift+F
- Expected: GUI nautilus opens (the binding nautilus moved to)
-** TODO [#B] Enlarge org-capture popup to scratchpad size :hyprland:
+** DONE [#B] Enlarge org-capture popup to scratchpad size :hyprland:
+CLOSED: [2026-06-24 Wed]
From a .emacs.d inbox handoff (2026-06-15, captured via roam): the quick-capture / org-protocol popup is too small to be effective — it should be about the size of a terminal scratchpad.
+*** 2026-06-24 Wed @ 17:21:11 -0400 Sized the popup to the scratchpad, per-host in pixels
+The 06-15 read was wrong: the real size lever is the Hyprland window rule, not the quick-capture char-cell count. The =size 900 500= rule on the org-capture window pinned it to 900x500 regardless of the frame's requested geometry (demoing 120x24 vs 180x32 looked identical because both clamped to 900x500). Tried a percentage rule (=size 75% 70%=) to auto-adapt per host like the pyprland scratchpad — native window rules do NOT honor percentages (only pyprland does), so the frame fell back to char-cell geometry and overflowed the screen. Fix: absolute pixels matching each host's terminal scratchpad, placed in the host tier (=<host>/conf.d/local.conf=) since pixels don't adapt across monitors. velox = 1078x671 (75%x70% of its 1437x958 logical desktop) — verified on-screen. ratio = 1892x936 (55%x65% of 3440x1440) — set but not yet eyeballed on ratio (tracked as an Active Reminder in notes.org). The shared hyprland.conf keeps float/center/stay_focused and a comment pointing at the per-host size. dotfiles change — needs commit in =~/.dotfiles=.
+
*** 2026-06-15 Mon @ 19:19:55 -0500 AI Response: popup size is the frame's char-cell count, not the Hyprland rule
Triaged under auto inbox-zero. The popup is the emacsclient frame named "org-capture", created by =~/.dotfiles/hyprland/.local/bin/quick-capture= with =(width . 90) (height . 22)= — 90 columns by 22 lines. Emacs sizes by character cells and overrides the Hyprland rule =windowrule = match:title ^(org-capture)$, size 900 500= (hyprland.conf:182). The live frame measured ~889x860 px; the width tracks the 90-column count, not the window rule. Setting the Hyprland rule to =size 55% 65%= (the scratchpad's pyprland spec) did not change the frame width, so I reverted it — dotfiles left clean.
@@ -788,7 +831,7 @@ Real lever: the column/line count in the quick-capture script. Scratchpad refere
- Emacs char-cell sizing doesn't adapt to the monitor the way pyprland's percentage does, so "scratchpad-size on both machines" needs one of: a fixed compromise count, a per-host override via the ratio/velox tiers, or a script that computes columns from the active monitor.
Options to weigh: (a) a safe-on-both compromise like width 120-130 / height 24; (b) per-host width through the ratio/velox tiers; (c) dynamic sizing in quick-capture from =hyprctl monitors=. Pick the tradeoff and I'll implement.
-** TODO [#C] archsetup Waybar Wi-Fi module should show no-internet state :feature:
+** TODO [#C] archsetup Waybar Wi-Fi module should show no-internet state :feature:waybar:
:PROPERTIES:
:LAST_REVIEWED: 2026-06-13
:END:
@@ -797,14 +840,32 @@ From the roam inbox: the Waybar Wi-Fi module should distinguish "connected to an
A 2026-06-22 roam capture expands the scope past a passive indicator: the wifi module should also bounce the network, run basic diagnostics, and optionally run a speed test with results — surfaced through modifier clicks (ctrl/super/meta) on the module. The no-internet state is the indicator; this adds active remediation off the same component.
** TODO [#C] Waybar emacs-service status + control :feature:waybar:
+:PROPERTIES:
+:LAST_REVIEWED: 2026-06-24
+:END:
From the roam inbox (2026-06-22): with Emacs integrated into the system as file manager and instant note-taker, make bouncing it trivial. A waybar component showing the emacs service status, with detail on hover, that turns the server on / off / bounce via right-click. Pairs with running the Emacs daemon as a managed systemd user service.
** TODO [#C] Collapse waybar sysmonitor to a single icon + hover :feature:waybar:
+:PROPERTIES:
+:LAST_REVIEWED: 2026-06-24
+:END:
From the roam inbox (2026-06-22): replace the spread-out sysmonitor readouts (temp, cpu, mem, storage) with one visible icon showing a single chosen metric, the rest in the hover tooltip. Open question: fold it into the battery component instead of a standalone module. Implementation lives in the waybar config under ~/.dotfiles.
** TODO [#C] Proton Mail Bridge font size :chore:
From the roam inbox (2026-06-22): adjust the Proton Mail Bridge UI font to a comfortable size. The bridge is a Qt app, so it likely keys off Qt scaling or the qt5ct/qt6ct config like the other Qt apps (QT_SCALE_FACTOR or a font setting).
+** TODO [#C] Highlight current month and year in the calendar hover :feature:waybar:quick:solo:
+:PROPERTIES:
+:LAST_REVIEWED: 2026-06-24
+:END:
+From the roam inbox (2026-06-24): the waybar clock's calendar tooltip highlights today's date in goldenrod; the current month and year header should be goldenrod too. Mirror the existing date-highlight pango/CSS span onto the calendar header (=format-calendar= / the clock module's tooltip format). Small mechanical tweak following the established highlight pattern; residual is a visual spot-check of the hover.
+
+** TODO [#C] Rename idle inhibitor to something more intuitive :chore:waybar:
+:PROPERTIES:
+:LAST_REVIEWED: 2026-06-24
+:END:
+From the roam inbox (2026-06-24): the "idle inhibitor" name doesn't work as a mnemonic — something like "sleep" (i.e. "keep awake" / "no-sleep") would land better. Decide the new name, then rename across the touchpoints: the =custom/idle= waybar module, the keybind mnemonic, and the backing script names (=hypridle-toggle= / =waybar-idle= from the 2026-06-24 idle-inhibitor work). Needs Craig's call on the name first, so not solo.
+
* Archsetup Resolved
** DONE [#B] Full install logs should contain timestamps