explaingit

peetzweg/opendisplay

Analysis updated 2026-05-18

1,725SwiftAudience · generalComplexity · 2/5Setup · moderate

TLDR

Turns a spare iPhone or iPad into a free, open-source second monitor for your Mac over USB or WiFi.

Mindmap

mindmap
  root((repo))
    What it does
      True second display
      Touch input support
      USB or WiFi streaming
    Tech stack
      Swift
      VideoToolbox H264
      CGVirtualDisplay API
    Use cases
      Extend Mac desktop
      Use iPad as monitor
      Low latency USB display
    Audience
      Mac users
      iPhone iPad owners
    Setup
      Two apps required
      Xcode build from source
      Screen recording permission

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

What do people build with it?

USE CASE 1

Use a spare iPhone or iPad as a real second monitor for your Mac.

USE CASE 2

Extend your Mac desktop over USB for the lowest latency connection.

USE CASE 3

Connect wirelessly over WiFi without any cables or extra hardware.

USE CASE 4

Use the phone screen as a touch input device for macOS.

What is it built with?

SwiftXcodeVideoToolboxScreenCaptureKit

How does it compare?

peetzweg/opendisplaysw33tlie/macshotgontovnik/dgrunkeeperswitch
Stars1,7251,6481,868
LanguageSwiftSwiftSwift
Last pushed2019-12-11
MaintenanceDormant
Setup difficultymoderateeasyeasy
Complexity2/51/52/5
Audiencegeneralgeneraldeveloper

Figures from each repo's GitHub metadata at analysis time.

How do you get it running?

Difficulty · moderate Time to first run · 30min

Needs a Mac app plus an iOS app, and several macOS permissions like Screen Recording and Accessibility.

No license information is stated in the README excerpt provided.

In plain English

OpenDisplay lets you turn a spare iPhone or iPad into a real second monitor for your Mac, for free, with no subscription and no extra hardware dongle. The project positions itself against Apple's own Sidecar feature, which only works between devices signed into the same Apple ID and does not support iPhones, and against paid options like Duet Display and Luna Display. OpenDisplay is open source and self hosted, meaning your screen data never passes through anyone else's server. The core feature is that macOS treats the connected phone or tablet as a genuine extra display, so you can drag windows onto it and arrange it in System Settings, rather than just mirroring what is already on your Mac's screen. It works either over a USB cable, which gives the lowest delay, or over WiFi, where the iPhone shows up automatically in a dropdown on the Mac thanks to Bonjour discovery. The image is sharp because the virtual display matches the device's screen resolution pixel for pixel. The phone also acts as a touchscreen, supporting tap to click, drag, and two finger scrolling similar to a trackpad, and the display automatically switches between portrait and landscape when you rotate the device. Under the hood, the Mac captures its virtual display, encodes the video using hardware accelerated H.264, and streams it to the phone over a plain TCP connection, while the phone sends touch and scroll events back the other way as small JSON messages. This relies on a private Apple graphics API for creating virtual displays, which is also why the project cannot be distributed through the App Store and instead lives on GitHub. To use it, you need two apps, one for the Mac and one for iOS. A signed and notarized Mac app is available as a direct download from the project's releases page, and the iPhone app can be installed through TestFlight or built from source in Xcode in a couple of minutes. Building from source requires Xcode 15 or later and a free or paid Apple developer account. Several macOS and iOS permissions, including Screen Recording, Accessibility, and Local Network access, are required for capture, touch input, and WiFi discovery to work, and the README includes a table explaining what breaks if each permission is missing.

Copy-paste prompts

Prompt 1
Walk me through building the OpenDisplay Mac and iOS apps from source in Xcode.
Prompt 2
Explain how OpenDisplay streams video from my Mac to my iPhone using H.264.
Prompt 3
Help me troubleshoot why my iPhone isn't showing up in OpenDisplay's WiFi connection menu.
Prompt 4
What macOS permissions does OpenDisplay need and what happens if I skip one?

Frequently asked questions

What is opendisplay?

Turns a spare iPhone or iPad into a free, open-source second monitor for your Mac over USB or WiFi.

What language is opendisplay written in?

Mainly Swift. The stack also includes Swift, Xcode, VideoToolbox.

What license does opendisplay use?

No license information is stated in the README excerpt provided.

How hard is opendisplay to set up?

Setup difficulty is rated moderate, with roughly 30min to a first successful run.

Who is opendisplay for?

Mainly general.

Open on GitHub → Explain another repo

This repo across BitVibe Labs

Verify against the repo before relying on details.