aboutsummaryrefslogtreecommitdiffstats
path: root/docs/superpowers/specs/2026-10-07-island-core-design.md
diff options
context:
space:
mode:
Diffstat (limited to 'docs/superpowers/specs/2026-10-07-island-core-design.md')
-rw-r--r--docs/superpowers/specs/2026-10-07-island-core-design.md15
1 files changed, 9 insertions, 6 deletions
diff --git a/docs/superpowers/specs/2026-10-07-island-core-design.md b/docs/superpowers/specs/2026-10-07-island-core-design.md
index 93af743..0110432 100644
--- a/docs/superpowers/specs/2026-10-07-island-core-design.md
+++ b/docs/superpowers/specs/2026-10-07-island-core-design.md
@@ -83,9 +83,11 @@ instead, split into equal segments, one per active kind:
| location | `Theme.blue` | geoclue running |
| screen | `Theme.red` | a PipeWire node whose `media.name` matches `xdph-streaming` or `gsr-default` |
-The detection rules are those of `waybar-theme-udt/bin/privacy_dots.sh`. Mic
-and screen use `Quickshell.Services.Pipewire` instead of `pw-dump`; camera and
-location have no binding and stay as a short poll.
+The detection rules are those of `waybar-theme-udt/bin/privacy_dots.sh`,
+ported to `island/privacy.sh` and polled every 2s. Quickshell 0.3.1's `PwNode`
+exposes no running state, which is what tells a capturing source from an idle
+one, so mic and screen go through `pw-dump` like camera and location go
+through `fuser` and `pgrep`.
**Revealed.** The pointer enters the sliver's strip. The two pills slide down
and split apart from it in one continuous move: they start overlapping at the
@@ -126,12 +128,13 @@ time, coloured by state as waybar's `vms_dots.sh` did:
| State | Colour |
| --- | --- |
| running | `Theme.green` |
-| paused, idle | `Theme.yellow` |
-| pmsuspended | `Theme.accent` |
+| paused, blocked (virsh's idle), shutting down | `Theme.yellow` |
+| pmsuspended (`Virsh` calls it suspended) | `Theme.accent` |
| saved (managed save) | `Theme.blue` |
| crashed | `Theme.red` |
-Shut-off VMs get no dot, and with no VM running there are no dots at all.
+A shut-off VM gets no dot unless it carries a managed save; with every VM
+plainly shut off there are no dots at all.
States come from `desktop/modules/vm/Virsh.qml`, whose lifecycle event stream
already runs whether the drawer is open or not.