aboutsummaryrefslogtreecommitdiffstats
path: root/docs/superpowers/specs/2026-10-13-controls-panel-design.md
diff options
context:
space:
mode:
authorDanilo M. <danix@danix.xyz>2026-10-13 09:51:58 +0200
committerDanilo M. <danix@danix.xyz>2026-10-13 09:51:58 +0200
commitf40aa095d4ade7c08636329c40c77d2c715d98ee (patch)
tree1d000f4681513b66fb6d6cc40c2f861885bc3e84 /docs/superpowers/specs/2026-10-13-controls-panel-design.md
parentf73d7cd634c2c453069e0ae43a357e7cf30835c2 (diff)
downloadquickshell-f40aa095d4ade7c08636329c40c77d2c715d98ee.tar.gz
quickshell-f40aa095d4ade7c08636329c40c77d2c715d98ee.zip
docs(spec): controls panel uses named icons and a plain drag
Planning found two places where the spec diverged from the island it extends. Icons go through the icon theme like every other island icon, and drag is one MouseArea per tile with a pure drop-slot helper, which is less code than DragHandler and DropArea and can be tested under node. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Diffstat (limited to 'docs/superpowers/specs/2026-10-13-controls-panel-design.md')
-rw-r--r--docs/superpowers/specs/2026-10-13-controls-panel-design.md19
1 files changed, 15 insertions, 4 deletions
diff --git a/docs/superpowers/specs/2026-10-13-controls-panel-design.md b/docs/superpowers/specs/2026-10-13-controls-panel-design.md
index 57ecd68..582ffbe 100644
--- a/docs/superpowers/specs/2026-10-13-controls-panel-design.md
+++ b/docs/superpowers/specs/2026-10-13-controls-panel-design.md
@@ -95,7 +95,16 @@ Presentation reads as on while a game holds it (`Status.gaming`); clicking
then clears only the manual half, so the tile stays lit until the game ends.
That is the registry's existing rule and the tile does not hide it.
-Glyphs must exist in Inconsolata Nerd Font and be checked in its cmap.
+Icons are freedesktop names through `Quickshell.iconPath(name, true)`, the
+island's rule, so an icon theme switch reaches the panel. Every name was
+checked to resolve in candy-icons (which inherits breeze-dark): wifi
+`network-wireless` / `network-wireless-disconnected`, bluetooth
+`preferences-system-bluetooth`, DND `notifications` /
+`notifications-disabled`, presentation `video-display`, auto-lock
+`system-lock-screen`, output `Logic.volumeIcon`, mic
+`audio-input-microphone` / `microphone-sensitivity-muted`, the opener
+`preferences-system`, edit `document-edit`, hide `window-close`, show
+`list-add`.
## Panel
@@ -107,8 +116,9 @@ The grid is four columns, so seven tiles make two rows. A pencil glyph in a
corner enters edit mode, where:
- each visible tile carries a small × that hides it;
-- a tile dragged onto another moves to that position (`DragHandler` on the
- tile, `DropArea` on each slot);
+- a tile dragged onto another moves to that position: one `MouseArea` per
+ tile offsets it while pressed, and on release the slot under its centre
+ (`slotAt()` in `Controls.js`) is where it lands;
- hidden tiles appear in a strip under the grid, each with a + that appends it
to the visible list;
- clicks do not toggle and right-click does not open the drawer.
@@ -118,7 +128,8 @@ is allowed; the panel then shows only the strip.
The order helpers in `Controls.js` are pure: `known()`, `normalize(list)` (drop
unknown ids and duplicates), `hidden(list)`, `move(list, from, to)`,
-`hide(list, id)`, `show(list, id)`, `fill(volume)`. `test_controls.js` runs
+`hide(list, id)`, `show(list, id)`, `fill(volume)`, `step(volume, delta,
+max)`, `slotAt(x, y, pitch, cols, count)`. `test_controls.js` runs
them under `node`, the same way `test_logic.js` does.
## Opening