I built TetherShot: pixel-perfect iPhone screenshots from the Mac menu bar
DEV Community Grade 9 2d ago

I built TetherShot: pixel-perfect iPhone screenshots from the Mac menu bar

I take a lot of iPhone screenshots for docs and design reviews. The usual workflow (plug in, open QuickTime, screen record, crop) is annoying. I wanted a menu-bar button. So I built TetherShot : a tiny native macOS app that grabs a real iPhone framebuffer at full 1179x2556, drops it in a folder you choose, and copies it to your clipboard. Two ways to capture: USB: native AVFoundation. It flips the CoreMediaIO AllowScreenCaptureDevices flag so the iPhone appears as a .muxed AVCaptureDevice. Instant, full res, zero setup. Wi-Fi: cable-free over Apple's developer-services RemoteXPC tunnel. A small root tunneld daemon keeps it alive, so captures need no sudo and work even when the phone is locked . The fun part: my first version mirrored over AirPlay and captured with ScreenCaptureKit. On macOS Tahoe, the mirrored window blacks out whenever a capture context is active. I scrapped it for the framebuffer path. It's a Swift app shipped over npm. The postinstall builds from source, so there's no quarantine attribute and no Gatekeeper warning. npm install -g tethershot tethershot install MIT, local-first, no accounts or telemetry. https://github.com/apoorvdarshan/TetherShot

I take a lot of iPhone screenshots for docs and design reviews. The usual workflow (plug in, open QuickTime, screen record, crop) is annoying. I wanted a menu-bar button. So I built TetherShot: a tiny native macOS app that grabs a real iPhone framebuffer at full 1179x2556, drops it in a folder you choose, and copies it to your clipboard. Two ways to capture: - USB: native AVFoundation. It flips the CoreMediaIO AllowScreenCaptureDevices flag so the iPhone appears as a.muxed AVCaptureDevice. Instant, full res, zero setup. - Wi-Fi: cable-free over Apple's developer-services RemoteXPC tunnel. A small root tunneld daemon keeps it alive, so captures need no sudo and work even when the phone is locked. The fun part: my first version mirrored over AirPlay and captured with ScreenCaptureKit. On macOS Tahoe, the mirrored window blacks out whenever a capture context is active. I scrapped it for the framebuffer path. It's a Swift app shipped over npm. The postinstall builds from source, so there's no quarantine attribute and no Gatekeeper warning. npm install -g tethershot tethershot install MIT, local-first, no accounts or telemetry. Top comments (0)

Comments

No comments yet. Start the discussion.