diff options
| author | Craig Jennings <c@cjennings.net> | 2026-07-11 02:14:11 -0500 |
|---|---|---|
| committer | Craig Jennings <c@cjennings.net> | 2026-07-11 02:14:49 -0500 |
| commit | b2aeaf6caea2c2ba7d27012e5f4f3999ff7c81e0 (patch) | |
| tree | 7dfd56ed50ad92a535b90caad1ae28e48b00e8d8 /inbox/PROCESSED-2026-07-06-1054-from-archsetup-off-workspace-captures-rule.md | |
| parent | cfbabf1da65c5224a4e3c7302c71baa98935d0e4 (diff) | |
| download | rulesets-b2aeaf6caea2c2ba7d27012e5f4f3999ff7c81e0.tar.gz rulesets-b2aeaf6caea2c2ba7d27012e5f4f3999ff7c81e0.zip | |
chore: file processed inbox handoffs and add two backlog tasks
Diffstat (limited to 'inbox/PROCESSED-2026-07-06-1054-from-archsetup-off-workspace-captures-rule.md')
| -rw-r--r-- | inbox/PROCESSED-2026-07-06-1054-from-archsetup-off-workspace-captures-rule.md | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/inbox/PROCESSED-2026-07-06-1054-from-archsetup-off-workspace-captures-rule.md b/inbox/PROCESSED-2026-07-06-1054-from-archsetup-off-workspace-captures-rule.md new file mode 100644 index 0000000..03538af --- /dev/null +++ b/inbox/PROCESSED-2026-07-06-1054-from-archsetup-off-workspace-captures-rule.md @@ -0,0 +1,38 @@ +# Proposal: never use the user's active workspace for agent windows/captures + +From an archsetup session (2026-07-06). Craig's request, verbatim intent: when I open an app or take a screenshot for my own verification, don't do it on his active workspace — put it somewhere that doesn't interrupt what he's doing. He then asked to make this a rule for everyone and send it to rulesets. + +## Why + +During the audio-panel work I repeatedly launched the GTK panel and `imv` on Craig's live desktop to screenshot and verify. Each one popped onto his current workspace and stole focus/attention mid-task. Agents doing visual verification on a user's live session shouldn't hijack the workspace the user is actively working in. + +## The rule (proposed text, ready to place) + +**Never open a window or take a screenshot on the user's active workspace.** When visual verification needs a real window on the user's live desktop, keep it off the workspace they're working in: + +- **Captures for your own verification** — render and grab the window off the user's physical screen, then tear it down. On Hyprland this is a virtual headless output (verified non-disruptive on ratio 2026-07-06 — the physical monitor stayed on its workspace, focused, throughout): + + ```sh + hyprctl output create headless # virtual output on its own workspace + setsid <app> >/tmp/x.log 2>&1 </dev/null & + addr=$(hyprctl -j clients | python3 -c 'import json,sys; print(next((c["address"] for c in json.load(sys.stdin) if c.get("class")=="<CLASS>"), ""))') + hyprctl dispatch movetoworkspacesilent "<ws-on-headless>,address:$addr" # silent = keeps the user's focus + grim -o HEADLESS-<n> /tmp/shot.png # capture the virtual output only + pkill -f '<app>$'; hyprctl output remove HEADLESS-<n> # tear down, restore the display + ``` + + Key constraint: `grim` captures a *visible output*, so a window merely parked on another Hyprland workspace can't be screenshotted — it must render on the headless (or another real) output. That's why a headless output, not just "another workspace," is the tool for self-captures. (A nested compositor — weston/cage/sway — is the alternative on non-Hyprland Wayland or when a headless output isn't available; it needs the compositor installed.) + +- **Showing the user something** — open it on a *separate* real workspace and tell them which one, so it never grabs their active workspace. They switch when ready. (Craig's viewer preference is `imv`; launch it through the compositor — `hyprctl dispatch exec "imv <files>"` — so it survives the agent's shell, not a bare `&` job that gets reaped.) + +- **Always clean up** — close the window and remove any headless output afterward; verify the user's display is restored (physical monitor back to its workspace, no orphan processes). + +The principle is environment-general (don't commandeer the user's active workspace for agent-side visual work); the recipe above is the Hyprland/Wayland implementation. Other environments implement the same principle with their own off-screen mechanism. + +## Placement suggestion (your call — "appropriate places") + +I'd lean toward a short standalone rule file (e.g. `claude-rules/desktop-capture.md`) since it's a distinct concern, cross-referenced from `verification.md` (it's part of how visual verification is done) and `interaction.md` (it's about not disrupting the user). It could instead be a section in `verification.md`. The `imv`/viewer preference and the "launch through the compositor" mechanic could also land wherever `emacs.md`'s screenshot note lives. Pick whatever fits the layer best. + +## Companion (local, already applied) + +Captured as archsetup auto-memory (`display-images-via-imv.md`) as the stopgap; this inbox note is the propagation to canonical per the cross-project rule for rulesets-owned changes. |
