diff options
| -rw-r--r-- | AGENTS.md | 12 | ||||
| -rw-r--r-- | desktop/island/README.md | 25 |
2 files changed, 35 insertions, 2 deletions
@@ -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 |
