feat(desktop): add the Waybar status bar (task 0023) #15
Reference in New Issue
Block a user
Delete Branch "task-0023-waybar-status-bar"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Task:
.claude/tasks/0023-waybar-status-bar.mdSummary
Adds a Waybar status bar to the desktop group, enabled through the aggregator at default priority.
One top bar shows workspaces with per-application icons (mapped from window class), a clock, MPRIS media controls, audio volume, network, battery, and a do-not-disturb toggle.
No overview/exposé plugin is used.
The bar runs as a home-manager systemd user service bound to
graphical-session.target, which uwsm activates.Deviations from the plan:
wireplumberwidget over a machine with no running sink is inert. A smallmodules/desktop/audio.nixenables PipeWire (ALSA + Pulse shims, rtkit) under its ownmodules.desktop.audio.enable. It is a distinct concern that could be split into its own task — flagged for you to keep or separate.custom/dndwidget shells out tomakoctl; until that daemon lands it degrades to "notifications on" rather than erroring, and reflects real state the moment mako runs.nix flake checkpasses (neogaia builds green). The rendered bar, MPRIS, and audio widgets can only be exercised in a live Wayland session on neogaia.Review
Risk
Overall: Medium
nix flake checkbuilds green but the bar's runtime behavior (shell scripts, glyphs, dispatchers) is unexercised, failing only at login if wrong.security.rtkit.enable(realtime-priority scheduling) and PipeWire audio permissions.fromJSONglyph trick, no tangled control flow.Unaddressed findings
modules/desktop/audio.nix/ PipeWire is not requested by the task or the parent spec's Components list. Kept because the audio widget is inert without a sink; documented above so it can be split out later if preferred.${pkgs.X}/bin/…interpolations andformat-iconsglyph arrays recur across widgets and scripts — the reviewer judged this within house style (matchinghyprland.nix) and not worth extracting.— Claude