# 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.