feat(desktop): add screen recording (task 0029)
Add a wf-recorder module, enabled by the desktop aggregator. Super+Shift+R picks a region with slurp and toggles a video-only capture (no audio), stopped with SIGINT so the file finalises, saved to ~/Videos/Recordings. Start and saved notifications fire via notify-send. A Waybar custom/recording widget samples the wf-recorder process once a second and shows a video glyph while a capture runs.
This commit is contained in:
@@ -13,8 +13,28 @@ No audio capture and no full-screen recording variant.
|
||||
|
||||
## Acceptance criteria
|
||||
|
||||
- [ ] A wf-recorder module exists in the desktop group and is enabled by the aggregator.
|
||||
- [ ] The recorder selects a region first, then toggles video-only recording on `Super+Shift+R`.
|
||||
- [ ] A recording indicator appears in the bar, and notifications fire on start and stop.
|
||||
- [ ] No audio is captured and no full-screen variant is provided.
|
||||
- [ ] neogaia builds green under `nix flake check`.
|
||||
- [x] A wf-recorder module exists in the desktop group and is enabled by the aggregator.
|
||||
- [x] The recorder selects a region first, then toggles video-only recording on `Super+Shift+R`.
|
||||
- [x] A recording indicator appears in the bar, and notifications fire on start and stop.
|
||||
- [x] No audio is captured and no full-screen variant is provided.
|
||||
- [x] neogaia builds green under `nix flake check`.
|
||||
|
||||
## Implementation Notes
|
||||
|
||||
- **Toggle design.**
|
||||
One key both starts and stops.
|
||||
A running capture is stopped with SIGINT so wf-recorder finalises the file; otherwise slurp picks a region and wf-recorder runs in the foreground for the whole recording, so the same invocation fires the "saved" notification once the file is written.
|
||||
Region-first and video-only (no `-a`, so no audio) satisfy the spec directly, and no full-screen variant is offered.
|
||||
|
||||
- **Bar indicator polls rather than signals.**
|
||||
The Waybar `custom/recording` widget samples the wf-recorder process with `pgrep` on a one-second interval, showing a video glyph while a capture runs and collapsing to nothing when idle.
|
||||
An earlier draft signalled Waybar (`pkill -RTMIN+9`) from the toggle, but the start path raised the signal before wf-recorder had launched, so `pgrep` saw nothing and the indicator never lit during a recording — caught in review.
|
||||
Polling is race-free, removes the signal number shared across two files, and is adequate for a status glyph.
|
||||
|
||||
- **No waybar `window-rewrite` icon.**
|
||||
wf-recorder is headless and slurp is a transient selection overlay, so neither owns a workspace window and the per-application icon convention does not apply.
|
||||
|
||||
- **Recordings land in `~/Videos/Recordings`**, timestamped `recording-<date>.mp4`, with the directory created on first capture.
|
||||
|
||||
- **Live capture is the irreducible manual step.**
|
||||
The build is green, the config parses under `Hyprland --verify-config`, and the indicator's idle/recording transitions are verified against a stand-in process; exercising a real slurp selection and wf-recorder capture needs a running session.
|
||||
|
||||
Reference in New Issue
Block a user