aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--AGENTS.md12
-rw-r--r--desktop/island/README.md25
2 files changed, 35 insertions, 2 deletions
diff --git a/AGENTS.md b/AGENTS.md
index 2d7c950..82b73e0 100644
--- a/AGENTS.md
+++ b/AGENTS.md
@@ -12,7 +12,8 @@ running one does not require the others. `desktop/` is itself a host for
modules.
desktop/ the drawer: sound, mail, VMs, appearance
- island/ top-centre pills on DP-1: clock, volume, tray, layout, privacy
+ island/ top-centre pills on DP-1: clock, volume, tray, layout, privacy,
+ controls panel (SUPER alone)
appearance/ wallpaper picker and colour scheme switcher
window-switcher/ open windows as live previews in a grid, on ALT+TAB
keybinds/ live keybind reminder, on SUPER+k
@@ -145,6 +146,15 @@ changing that component. The ones that generalise:
- **`hyprctl switchxkblayout current next|prev` targets the main keyboard**, so
no device lookup is needed. Hyprland's `activelayout` raw event fires on
every switch, so the layout flag is event-driven rather than polled.
+- **A bare-modifier release bind works on Hyprland 0.56.2.** `hl.bind("SUPER
+ + Super_L", ..., { release = true })` fires on SUPER pressed and released
+ alone, and is cancelled by any key in between and by `SUPER`+drag and
+ `SUPER`+scroll; all checked by hand. That is how SUPER alone opens the
+ island's controls panel.
+- **`FileView.setText` creates missing parent directories**, so `Prefs.qml`
+ has no mkdir step. `Quickshell.stateDir` is a per-shell hashed directory
+ (`by-shell/<hash>`), not `~/.local/state/quickshell`, which is why the
+ preferences path is built from `XDG_STATE_HOME` instead.
- **Waybar is gone, both bars.** Its DP-3 functions moved to the island. The
mail count is drawer-only: `Accounts.qml` watches the xapian directory
itself, and `waybar-mail.sh` was deleted.
diff --git a/desktop/island/README.md b/desktop/island/README.md
index 2b2c9fe..8f70506 100644
--- a/desktop/island/README.md
+++ b/desktop/island/README.md
@@ -46,8 +46,9 @@ is open or not.
## Status pill
-Left to right: volume icon, tray, layout flag.
+Left to right: controls icon, volume icon, tray, layout flag.
+- **Controls icon** opens the controls panel, see below.
- **Volume icon** shows the default sink (muted, low, medium, high). Click
opens the sound panel.
- **Tray** shows `SystemTray` items. Left click activates, right click opens
@@ -58,6 +59,28 @@ Left to right: volume icon, tray, layout flag.
`activelayout` event. Scroll switches layout with
`hyprctl switchxkblayout current next|prev`.
+## Controls panel
+
+Opened by the status pill's controls icon, or by SUPER pressed and released
+alone (`qs -p desktop ipc call island controls`, a Hyprland release bind;
+any key or mouse bind pressed in between cancels it). Seven tiles: wifi,
+bluetooth, DND, presentation, auto-lock, output, mic.
+
+- Click toggles. Right-click closes the panel and opens the tile's drawer
+ page.
+- Output and mic fill to their volume, clamped at 100%; muted greys the bar
+ instead of emptying it. Scroll steps 5%, output capped at 150%.
+- A tile whose backing object has not arrived (the first two seconds, no
+ adapter, no sink) is dimmed and ignores input.
+- The pencil enters edit mode: drag a tile to another slot, × hides it, the
+ strip below lists hidden tiles with a + each. Closing the panel ends it.
+
+The visible tiles and their order live in
+`$XDG_STATE_HOME/quickshell/desktop.json` (`../Prefs.qml`), written only when
+they change and keeping keys it does not know. A tile added to the code
+later starts hidden. Pure helpers in `Controls.js`, tested with
+`node island/test_controls.js`.
+
## Privacy
`privacy.sh` prints `mic cam loc scr`, each 0 or 1, and `Privacy.qml` polls it