feat(desktop): add screenshot capture (task 0028) #20
Reference in New Issue
Block a user
Delete Branch "task-0028-screenshot-capture"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Task:
.claude/tasks/0028-screenshot-capture.mdSummary
Adds a
modules.desktop.screenshotmodule, enabled by the desktop aggregator atmkDefault.grimblast(wrapping grim + slurp) captures a region, the active window, or the full screen to stdout and pipes into the satty annotation editor. satty's copy action is configured with--copy-command wl-copy --save-after-copy, so a single confirmation lands the shot in both the clipboard and a dated file under~/Pictures/Screenshots. neogaia builds green undernix flake check.Deviations
Print/Shift+Print/Ctrl+Print, not the spec'sSuper+L/Super+Shift+L/Super+Ctrl+L. Task 0021 already bindsSuper+L/Super+Shift+L/Super+Alt+Lto thehjklfocus, window-move, and resize actions, so the literal spec binds are a direct collision with core navigation — and the spec's own keybind table lists both meanings for those keys, so it is internally contradictory. Twobind=lines for one combo don't coexist in Hyprland, so the collision had to be broken; the operator confirmed moving screenshots to the Print family, which preserves the plain/Shift/Ctrl → region/window/full pattern.window-rewriteicon for satty, by the operator's direction (see Review below).Review
Risk
Overall: Low
mkDefaultopt-in line and three keybinds; no existing behavior touched.Unaddressed findings
window-rewritemapping for satty (project CLAUDE.md convention for graphical apps). Deliberately declined: satty is a transient floating annotation window rather than one that lives on a workspace, so at the operator's direction it gets no workspace glyph.All other Standards and Spec findings (an inaccurate
$modcomment, a run-on "what" comment, the enable-description phrasing, and under-documented deviation rationale) were fixed in the diff.— Claude