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