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

99 lines
4.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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: `desktop``bar` (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; `focus``workspaces`; `vitals`+`clock``bar`; new `datetime``datetime`;
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.