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
4.9 KiB
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:
barTextToneenumtheme|light|dark(deftheme) — drives new Theme tokensbarFg/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.barTextShadowbool (def false) — onelayer.effectMultiEffect 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.barBackdropbool (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; newdatetime→datetime; newbar/controlCentergroups. 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.