Files
Panama/docs/superpowers/specs/2026-08-24-shell-category-redesign.md
T
Gabriel Brown f8f5b25510 Make Shell a category, the bar legible, and the dock a real dock
Desktop & Dock becomes Shell — Bar, Dock, Control Center, Tiling,
Workspaces — the home for everything Quickshell draws. The settings-
management cluster moves to System as Sync & Backup, Appearance's
Shell tab dissolves, and 24-hour time finally lives on Date & Time,
which always owned it.

The bar gets what it never had: a way to survive the wallpaper. A
second neutral text family (follow theme, or forced light or dark),
a one-layer shadow under every glyph, and a gradient scrim for
wallpapers nothing else survives — all off by default, pixel-identical
until asked. Widgets earn toggles (weather, media, clipboard, calendar
countdown), the vitals cluster stops leaving a dead pill behind, and
Control Center's sections learn to step aside.

The dock graduates from MVP: a context menu with window rows, pin,
unpin, quit and new-window; scroll an icon to cycle its windows; drag
to reorder on the dock itself; hover previews with one-shot captures;
and "Add App to Dock" in the launcher. Three real bugs died en route —
menus that slid away with the autohide, a readonly-property crash on
every menu open, and a drag that drifted half a slot per icon on side
docks. The pinned-apps editor in Settings becomes a drag strip.

166 contracts; the full suite is green except two live display and
switcher tests that cannot run behind a locked session — re-verified
on unlock.

Claude-Session: https://claude.ai/code/session_01Ms2FbjQy31TVf3CEvQhGM8
2026-08-24 04:28:20 -04:00

4.9 KiB
Raw Blame History

Shell category — Bar · Dock · Control Center · Tiling · Workspaces

Approved 2026-08-24 (interactive mock). Desktop & Dock becomes Shell: the home for everything Quickshell draws. Five tabs, three of them new surfaces. The settings- management cluster leaves for System; Appearance's Shell tab dissolves into the Bar tab; the dock's feature upgrade (drag-reorder on the dock, context menu, previews, scroll cycling, launcher pin command) lands separately once the research report is in.

Routing

Category id shell, label Shell, keeping the old icon. Leafs: bar, dock, control-center, tiling, workspaces — five new pages; DesktopPage.qml dies. Retired: desktopbar (first tab). DockContextMenu's "Dock settings" deep-links to dock. System gains leaf sync ("Sync & Backup"), ten tabs total.

Bar (the new surface)

Visibility. New schema group bar:

  • barTextTone enum theme|light|dark (def theme) — drives new Theme tokens barFg/barFgDim/barFgMuted (theme ⇒ today's fg family; light ⇒ near-white with derived dims; dark ⇒ near-black likewise). Bar widgets rebind their ~26 neutral text/glyph bindings to the bar tokens — semantic tones (warn/danger/accent/ok) stay.
  • barTextShadow bool (def false) — one layer.effect MultiEffect shadow over the whole bar content; one change covers every widget and icon. Event-driven repaints only; the bar already repaints once a second for the clock.
  • barBackdrop bool (def false) — a top-down gradient scrim Rectangle behind the content rows.

Widgets card. New bools (group bar, all def true): showWeatherWidget, showMediaWidget, showClipboardButton, showCalendarCountdown — each ANDed with the widget's existing state condition. Moved here: showCpu/showMemory/showGpu, showBattery, showBatteryPercent, showAgentUsage. Fix in passing: VitalsWidget renders no pill at all when all three fields are off (today an empty dead pill stays). State-driven indicators (health, activity, focus, wallpaper, calendar-within-window) stay automatic.

Clock card. showSeconds, showWeekday (group clock, now routing to bar). use24Hour moves to a new group datetime routing to the Date & Time page, which gains the toggle — it drives the date menu, notifications, and the lock screen, and was never just the bar's.

Vitals card. vitalsIntervalMs + the graphics-device ChoiceGrid, moved from Appearance.

Dock

DockPage.qml: the Dock behavior card (position, screens, autohide, delays, icon size — unchanged rows), then Pinned applications rebuilt as DockPinsStrip.qml: a horizontal strip of app icons (real icons, the dock's own resolution), drag to reorder, hover-× to unpin, the existing DockAppPicker search beneath. The 16-full-rows editor (DockPinsEditor) retires; its drag mechanics inform the strip. The dock-position contract's preventStealing pin moves to the strip.

Control Center

ControlCenterPage.qml — the panel's first settings surface. New schema group controlCenter: one show/hide bool per real section of QuickSettingsPanel (verified against the panel's actual structure at build time; the mock showed Focus, Home, Phone, Media as candidates — only sections that exist get toggles). Plus an Accessories handoff row to Home My Home.

Tiling

TilingPage.qml: Window layout (+ the Appearance Windows handoff), Master & stack (visible when master), Window edges, Hyprland notices — all rows moved unchanged.

Workspaces

WorkspacesPage.qml: Workspaces & focus toggles, Focus session length, Projects — moved unchanged.

System Sync & Backup

SyncPage.qml (leaf sync): "Carry settings to another machine" (SettingsSync), "Settings backups" (SettingsBackup — retitled so it stops colliding with btrfs Snapshots one tab over), "Reset". The Restore defaults search entry re-points here.

Appearance shrinks

The shell tab and its two cards leave AppearancePage; five tabs remain.

Blast radius

  • SettingsSearch.groupPages: dock/multitasking/edges/master/notices → their new leafs; focusworkspaces; vitals+clockbar; new datetimedatetime; new bar/controlCenter groups. extraEntries: "Restore defaults" → sync; new entries for bar visibility, dock pins, control center.
  • Contracts updated in-phase (tests are runnable this pass): settings-jump (DockContextMenu → dock), projects-contract (DesktopPage greps → WorkspacesPage), dock-position-contract (strip), desktop-style/lock-screen-settings (Appearance card lists), search fixed cases, ownership groupPages cross-checks, agent-usage (unchanged gating), plus a new bar-visibility contract.
  • Generators re-run; README/manual updated.

Deferred (dock feature wave, post-research)

Drag-reorder on the live dock, right-click unpin/window actions, window previews, scroll cycling, the launcher "Add app to dock" command.