feat(desktop): add screen recording (task 0029) #21
Reference in New Issue
Block a user
Delete Branch "task-0029-screen-recording"
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/0029-screen-recording.mdSummary
Adds a
modules.desktop.recordingmodule, enabled by the desktop aggregator.Super+Shift+Rselects a region with slurp and toggles a video-only wf-recorder capture (no-a, so no audio); a second press SIGINTs the recorder so the file finalises. Captures land timestamped in~/Videos/Recordings, withnotify-sendtoasts on start and on save. A Waybarcustom/recordingwidget samples the wf-recorder process once a second and shows a video glyph while a capture runs, collapsing to nothing when idle. No full-screen variant is offered. neogaia builds green undernix flake checkand the config parses underHyprland --verify-config.Deviations
interval: 1) instead of being signal-driven. An earlier draft signalled Waybar from the toggle, but the start path raised the signal before wf-recorder had launched, so the indicator never lit during a recording (caught in review). Polling is race-free and drops the signal number that was shared across two files.window-rewriteicon — wf-recorder is headless and slurp is a transient overlay, so neither owns a workspace window and the per-app icon convention doesn't apply.Review
Risk
Overall: Medium
modules-right, so a malformed widget degrades the whole bar.nix flake checkproves build/parse and the indicator's idle/recording transitions are verified against a stand-in process, but a live slurp+wf-recorder capture is unexercised.Unaddressed findings
None. The Spec review's confirmed timing bug (indicator never lit during recording) was fixed by switching to interval polling; the two Standards judgement-calls (cross-file signal-coupling comments) were dissolved by removing the signal mechanism and are no longer present.
— Claude
Update: media output paths follow XDG user-dirs
Adds
modules.desktop.userdirs(enables home-managerxdg.userDirs, writing~/.config/user-dirs.dirs), and routes both media tools throughxdg-user-dirinstead of a hardcoded$HOMEpath:xdg-user-dir VIDEOS→<Videos>/Recordingsxdg-user-dir PICTURES→<Pictures>/ScreenshotsDefaults resolve to
~/Videos/Recordingsand~/Pictures/Screenshotsas before, but relocating a directory is now a one-line change toxdg.userDirs. Verified: the generateduser-dirs.dirsresolves the defaults, and an overriddenXDG_VIDEOS_DIRredirects the recorder's base accordingly. This commit also touchesmodules/desktop/screenshot.nix, which belongs to task 0028.— Claude