aboutsummaryrefslogtreecommitdiffstats
path: root/docs/superpowers/specs/2026-09-14-desktop-shell-design.md
AgeCommit message (Collapse)AuthorFilesLines
34 hoursdocs: settle the vm tile's cold state on drawer openDanilo M.1-3/+4
The vm module's service is lazy, so the tile had no state to show before its page had been visited. One `virsh list` when the drawer opens fixes that for the cost of a single call; the per-VM polling for guest-agent stats and managed-save detection still waits for the page, which is where the expense actually is. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01We9zcHEH8ZWHPcQwMaJRNv
34 hoursdocs: design for a unified desktop shell with a drawer and modulesDanilo M.1-0/+271
Five components mean five processes, five autostart lines, five blur rules, and functionality scattered across surfaces with nothing in common. Nothing is discoverable without remembering it exists. The design is one left-side drawer on DP-1, reached from a launcher at the left end of waybar, hosting modules as tiles that may open full-height pages. Modules declare a tile, a page, both or neither, plus whether their background service runs while the drawer is closed: sound and mail must (the OSD reacts to keypresses, the unread count outlives the drawer), vm must not, since polling virsh only paints a page nobody is looking at. Three components merge in (volume-osd, mail-overview, vm-manager), two stay separate because a 600px drawer is the wrong shape for them: window-switcher is a fullscreen ALT+TAB grid, appearance needs room for a wallpaper picker. Appearance still earns a tile that fires its existing IPC, which is the case that proves a tile needs no page of its own. The top of the drawer is reserved and empty. The notification engine is a later project, but the space has to be claimed now: build the grid anywhere else and it moves the day notifications land, having been tuned against a position that does not survive. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01We9zcHEH8ZWHPcQwMaJRNv