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
99 lines
4.9 KiB
Markdown
99 lines
4.9 KiB
Markdown
# 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.
|