From d9783e91a4b98f14e02a3d7f947ab6617cb96047 Mon Sep 17 00:00:00 2001 From: "Danilo M." Date: Wed, 7 Oct 2026 18:42:17 +0200 Subject: docs(plan): island core implementation plan Twelve tasks from pure logic to waybar removal. The spec is corrected on two points found while reading the code: Quickshell's PwNode has no running state, so mic and screen detection poll pw-dump like the waybar script did, and the VM dot rule now agrees with its own table on saved VMs. Co-Authored-By: Claude Opus 5.5 --- docs/superpowers/specs/2026-10-07-island-core-design.md | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) (limited to 'docs/superpowers/specs/2026-10-07-island-core-design.md') 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. -- cgit v1.2.3