Repository navigation
Conversation
voxtype pauses MPRIS players while it listens (pause_media), and the system-wide mpv-mpris plugin made the webcam overlay one, so the camera froze in the recording whenever dictation started. The overlay now starts mpv with --load-scripts=no. On Apple Silicon the overlay also segfaulted every time it closed: frames were rendered straight from the camera's mmap'd V4L2 buffer, which is unmapped while the renderer still reads it. A format=yuv420p step copies each frame out first. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
gpu-screen-recorder can't capture on Apple Silicon: its KMS backend can't map the Apple display controller to a GPU (DRM_CLIENT_CAP_UNIVERSAL_PLANES is unsupported, eDP-1 is "not found"), so a recording silently never started and there was nothing to stop. omarchy-capture-screenrecording now records with wf-recorder there, through Hyprland's screencopy protocol, encoding with x264 on the CPU since Asahi has no hardware video encoder. - Same capture targets (monitor, region) and the same -s size cap, as a scale filter; desktop + microphone are mixed through a temporary null sink, since wf-recorder records one PulseAudio source. - The script, the bar indicator and the menu's Stop entry match either recorder. - The recording-file pointer moves to $XDG_RUNTIME_DIR, so tests can't overwrite a live recording's. - wf-recorder joins the Asahi package set, and a migration installs it on Macs set up before this change. Other machines keep gpu-screen-recorder unchanged. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problem
On Apple Silicon,
Alt + Printscreen recording silently never starts.gpu-screen-recordercan't capture there. I tested each targetomarchy-capture-screenrecordinguses on an M1 Max (Asahi, Hyprland):-w eDP-1)display "eDP-1" not found, expected one of: "screen"-w screenno usable output foundkms server error: drmSetClientCap DRM_CLIENT_CAP_UNIVERSAL_PLANES failed: Operation not supportedThe script only marks a recording active once the recorder has created the output file, so the bar indicator never appears, there's nothing to stop and nothing is saved. Without
OMARCHY_SCREENRECORD_DEBUGno error is shown. The package-parity change (c751f51) replaced the interimwf-recorderwithgpu-screen-recorder, but the script never had an Apple Silicon path.Two more problems showed up with webcam recordings:
pause_mediapauses MPRIS players while it listens, and the system-widempv-mprisplugin makes the webcam overlay's mpv one.pl_tex_upload, both under Vulkan (libvulkan_asahi) and under OpenGL (memcpyin gallium).Changes
1. Webcam overlay (
913df83): mpv starts with--load-scripts=no(no MPRIS, so dictation leaves it alone), and the filter chain gainsformat=yuv420p, which copies each frame out of the V4L2 buffer. This touches every platform. The MPRIS fix applies wherever voxtype runs; the copy costs very little at 720p30.2. wf-recorder on Apple Silicon (
4e40f7d):omarchy-capture-screenrecordinguseswf-recorderwhenomarchy-hw-apple-siliconsucceeds. It captures through Hyprland's screencopy protocol and encodes with x264veryfaston the CPU.VK_KHR_video_encode, the M1 video encoder has no Linux driver, and the only Vulkan encoders that run (ProRes/FFV1 compute) were slower than real time at 3456x2160 with ~60 MB/s output.-o, region-g), and the-ssize cap becomes a scale filter. Desktop + microphone are mixed into one track through a temporary null sink, which is unloaded on stop, because wf-recorder takes a single PulseAudio source.ScreenRecording.qml) and the menu's Stop Screenrecording entry all match^(gpu-screen-recorder|wf-recorder)./tmpto$XDG_RUNTIME_DIR, next to the region file, so a test can't overwrite a live recording's pointer.wf-recorderjoinsomarchy-base-asahi.packages(gpu-screen-recorderstays for parity). Migration1792147276.shinstalls it on Macs set up earlier; it's self-gating and listed inasahi_migration_disposition.gpu-screen-recorderinvocation.Testing
test/shell.d/screenrecording-apple-silicon-test.sh(10 checks): wf-recorder arguments for monitor, region, size cap and each audio mode; gpu-screen-recorder off Apple Silicon; the shared detection pattern in script, menu and bar; the overlay flags; the migration. It stubspgrep/pkill, so it can't touch a real recording.screenrecording-test.sh,asahi-packages-test.shandmigrate-asahi-test.shpass../test/clipasses../test/shell, everything else passes except tests that fail the same way on unmodifiedmainon this machine (missingnode, and the boot/snapshot/GRUB suites).🤖 Generated with Claude Code