Skip to content

Conversation

Copy link

Copilot AI commented Jan 19, 2026

Extends the Linux-only screen recorder to support Windows and macOS using platform-specific ffmpeg inputs.

Changes

Platform detection

  • Added OS detection (OSWindows, OSDarwin, OSLinux) to deps package
  • Display server detection (Wayland/X11) now Linux-only

Windows implementation (ffmpeg)

  • Screen: gdigrab captures full desktop
  • Audio: dshow with empty device name for auto-detection
  • Webcam: dshow with empty device name for auto-detection

macOS implementation (ffmpeg)

  • Screen: avfoundation device "1:none" (main display with cursor)
  • Audio: avfoundation device ":0" (default microphone)
  • Webcam: avfoundation device "0:none" (default camera)

Architecture

func (r *Recorder) Start() error {
    switch deps.DetectOS() {
    case deps.OSWindows:
        return r.startWindows()
    case deps.OSDarwin:
        return r.startMacOS()
    case deps.OSLinux:
        return r.startLinux()
    }
}

Each platform implements startVideo/Audio/Webcam methods with platform-specific ffmpeg arguments. Monitor detection returns placeholder data on Windows/macOS since ffmpeg handles actual resolution detection at runtime.

Limitations

  • Windows/macOS: Single monitor support only (captures primary/all screens)
  • Hardware acceleration remains Linux-only (VAAPI)
  • macOS requires system permissions for screen/audio/camera access

Warning

Firewall rules blocked me from connecting to one or more addresses (expand for details)

I tried to connect to the following addresses, but was blocked by firewall rules:

  • go.googlesource.com
    • Triggering command: /update-job-proxy /update-job-proxy 8658213/b011/ -outfilelist ache/go/1.24.11/origin /tmp�� d83cc540:internal/audio/audio.go y3z3u05Sk ache/go/1.24.11/x64/pkg/tool/linux_amd64/asm g_.a 8658213/b173/ ux_amd64/compile--name-only ache/go/1.24.11/HEAD ache�� d83cc540:internal/tui/recording_setup.go ux_amd64/compile-buildtags ux_amd64/vet x64/src/runtime//usr/bin/unpigz 5068803/b042/ n2hHtgzcA ux_amd64/vet (dns block)
    • Triggering command: /update-job-proxy /update-job-proxy DROP e test -e cd0fb9bef36fb2e3d91018c331f12e11cef7fc/shallow.lock /usr/sbin/iptables est -t la/emSign_ECC_Ro-c e test -e OMODO_Certificat-n1 /usr/sbin/iptabl--format=format:%H %ct %D /opt/go/bin/testrefs/tags/v0.1.0 ation_RootCA2.pe/usr/sbin/ip6tables nat e test (dns block)
  • go.yaml.in
    • Triggering command: /update-job-proxy /update-job-proxy 8658213/b011/ -outfilelist ache/go/1.24.11/origin /tmp�� d83cc540:internal/audio/audio.go y3z3u05Sk ache/go/1.24.11/x64/pkg/tool/linux_amd64/asm g_.a 8658213/b173/ ux_amd64/compile--name-only ache/go/1.24.11/HEAD ache�� d83cc540:internal/tui/recording_setup.go ux_amd64/compile-buildtags ux_amd64/vet x64/src/runtime//usr/bin/unpigz 5068803/b042/ n2hHtgzcA ux_amd64/vet (dns block)
    • Triggering command: /update-job-proxy /update-job-proxy DROP e test -e cd0fb9bef36fb2e3d91018c331f12e11cef7fc/shallow.lock /usr/sbin/iptables est -t la/emSign_ECC_Ro-c e test -e OMODO_Certificat-n1 /usr/sbin/iptabl--format=format:%H %ct %D /opt/go/bin/testrefs/tags/v0.1.0 ation_RootCA2.pe/usr/sbin/ip6tables nat e test (dns block)
  • gopkg.in
    • Triggering command: /update-job-proxy /update-job-proxy 8658213/b011/ -outfilelist ache/go/1.24.11/origin /tmp�� d83cc540:internal/audio/audio.go y3z3u05Sk ache/go/1.24.11/x64/pkg/tool/linux_amd64/asm g_.a 8658213/b173/ ux_amd64/compile--name-only ache/go/1.24.11/HEAD ache�� d83cc540:internal/tui/recording_setup.go ux_amd64/compile-buildtags ux_amd64/vet x64/src/runtime//usr/bin/unpigz 5068803/b042/ n2hHtgzcA ux_amd64/vet (dns block)
    • Triggering command: /update-job-proxy /update-job-proxy DROP e test -e cd0fb9bef36fb2e3d91018c331f12e11cef7fc/shallow.lock /usr/sbin/iptables est -t la/emSign_ECC_Ro-c e test -e OMODO_Certificat-n1 /usr/sbin/iptabl--format=format:%H %ct %D /opt/go/bin/testrefs/tags/v0.1.0 ation_RootCA2.pe/usr/sbin/ip6tables nat e test (dns block)

If you need me to access, download, or install something from one of these locations, you can either:

Original prompt

well review the codebase here please and make a pr that adds support for windows and mac - specifically using native screen webcam and audio recording


✨ Let Copilot coding agent set things up for you — coding agent works faster and does higher quality work when set up for your repo.

Copilot AI and others added 3 commits January 19, 2026 18:01
Co-authored-by: timlinux <178003+timlinux@users.noreply.github.com>
Co-authored-by: timlinux <178003+timlinux@users.noreply.github.com>
Co-authored-by: timlinux <178003+timlinux@users.noreply.github.com>
Copilot AI changed the title [WIP] Add support for Windows and Mac native screen webcam and audio recording Add native Windows and macOS screen/audio/webcam recording support Jan 19, 2026
Copilot AI requested a review from timlinux January 19, 2026 18:11
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants