Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124

OpenDisplay 是開源、免費的 Mac 副屏工具,把 iPhone/iPad 變成真實的第二螢幕(非鏡像),USB 或 WiFi 連線,支援觸控。它是 Sidecar/Duet Display 的開源替代品,但 Mac 端依賴私有 API(無法上 App Store、macOS 更新可能壞)、WiFi 不加密,適合臨時副屏而非長期生產依賴。
用 AI 摘要這篇文章:
目錄
如果你的抽屜裡躺著閒置的 iPhone 或 iPad,OpenDisplay 是目前把它們變成 Mac 第二螢幕最值得裝的開源選項。它真的在 macOS 裡生出一塊虛擬顯示器,視窗能直接拖過去,不像一般投屏只是把畫面複製一份。但這套好用歸好用,有兩個你得自己承擔的代價:它依賴 macOS 的私有 API,未來系統大改可能要等作者重新適配;而且 WiFi 模式目前不加密。把它當出差、臨時副屏很稱職,要當長期穩定的生產力依賴,得先想清楚。
定位上,它就是蘋果隨航(Sidecar)、Duet Display、Luna Display 的開源替代品。Sidecar 免費但只認同一個 Apple ID、不支援 iPhone、還挑硬體配對;Duet 走訂閱;Luna 要你買一顆硬體 dongle。OpenDisplay 走的是免費、開源、免帳號、免 dongle 的路,而且支援 iPhone、兩台設備不需要登入同一個 Apple ID。
快速重點
開源(GPLv3)、純 Swift,把 iPhone/iPad 當成 Mac 的真實第二螢幕,USB 或 WiFi 都行,支援觸控。
真的擴展顯示(非鏡像),macOS 把它當一塊外接螢幕,視窗能拖過去、能排列。
兩個代價:Mac 端用私有 API(無法上 App Store、macOS 更新可能壞)、WiFi 模式不加密。
要 macOS 14、iOS 17 / iPadOS 17 以上;Mac 有公證 DMG 可雙擊裝,iPhone 走 TestFlight 或自編譯。
很多人把「投屏」和「副屏」搞混。前者只是把 Mac 畫面原樣複製到手機上,後者是 macOS 真的認得有一塊新螢幕接上來。OpenDisplay 做的是後者:連上之後,系統設定裡會多出一台顯示器,你可以調排列、解析度,把任何視窗拖過去放著,也能把設備直著擺,它就重建成一塊直向螢幕。需要的時候也能切回鏡像模式。
它在背後做的事是這樣:手機先開著、負責監聽,Mac 主動連過去,這個順序讓同一份程式碼能同時走 USB 和 WiFi。Mac 端靠 CGVirtualDisplay 這個機制建立一塊虛擬螢幕,再用 ScreenCaptureKit 把畫面擷取下來,經 VideoToolbox 做硬體 H.264 編碼,透過一條 TCP 連線送到手機,手機端解碼後顯示。畫面延遲壓得算低,因為用的是硬體編碼、關掉了 B-frame,遇到網路塞車會丟幀並靠關鍵幀還原。觸控則是手機把點擊、拖曳、雙指滾動當控制訊息傳回 Mac,再用 CGEvent 注入,等於臨時多了一塊小觸控板。
虛擬螢幕的尺寸怎麼決定?手機會把自己的面板原生解析度報給 Mac,Mac 照著那個數字的一半、以點為單位建一塊 @2x HiDPI 的虛擬螢幕,所以畫面是像素一對一的 Retina 等級,文字邊緣銳利,不會有一般遠端桌面那種糊糊的放大感。它敢自稱「真實顯示器」的底氣也在這裡:macOS 從頭到尾都以為有一台實體螢幕掛在身上,排列、縮放、HiDPI 全照外接螢幕的規矩走。
把幾個方案攤開來看會更清楚。蘋果內建的隨航免費,但綁死在同一個 Apple ID、只支援 iPad、還要看你的 Mac 和裝置是不是它點頭的那幾種組合,iPhone 完全不在支援清單裡。Duet Display 功能齊全,但已經改成訂閱制。Luna Display 走硬體路線,你得先買一顆它的 dongle 插在 Mac 上。它跟 PlayBridge 那類區網投屏工具的方向也不一樣:PlayBridge 是把手機找到的媒體送去電視播,OpenDisplay 是反過來,把 Mac 的畫面送去手機顯示,還讓手機變成可用觸控板。

把這幾個方案放在「蘋果綁得多深」這條光譜上看最清楚:隨航整個鎖在蘋果生態裡、連 iPhone 都不收;Duet 和 Luna 一個賣訂閱、一個賣硬體,至少解開了蘋果帳號的綁定;OpenDisplay 連最後那道收費與綁定都拿掉,代價是把穩定性的帳掛到私有 API 上。觸控輸入也做進來了,點一下就是點擊、拖就是拖、兩指滑動就是滾動。Apple Pencil 和壓感目前還沒做,官方放在後續計畫裡。
連線方式有兩種,個性很不一樣。USB 是推薦的預設:插上 Lightning 或 USB-C 線,走 macOS 內建的 usbmuxd,延遲最低、不經網路、順便幫手機充電,插上就能用。WiFi 走的是區域網路,手機用 Bonjour 自己廣播,在 Mac 的選單裡挑一台連就行,完全免設定、也不用架任何服務,代價是延遲比 USB 高、會吃無線網路的品質。
實際用哪種,看場合。固定在桌前、追求順手,USB 幾乎沒有理由不選;想抱著筆電在沙發上把 iPad 當第二塊螢幕、不想牽線,就開 WiFi。它也能同時連好幾台,官方測過三台設備一起跑,不過整體流暢度還是受 Mac 效能和連線方式影響。
好用歸好用,有兩件事不講清楚就是坑。第一個是私有 API。OpenDisplay 在 Mac 端靠 CGVirtualDisplay 來建虛擬螢幕,這個介面蘋果沒有對外開放(BetterDisplay、DeskPad 這些同類工具也是用同一招)。後果很直接:它進不了 Mac App Store,只能放在 GitHub 和 TestFlight;更現實的是,蘋果每次系統大改,這條私有管道都可能被動到,到時得等專案重新適配。官方 FAQ 自己也寫得明白,問它會不會在某次 macOS 更新後壞掉,答案是「有可能」。畫面擷取和串流那一段倒是用公開 API,相對穩。
會走上私有 API 這條路,是因為蘋果一直沒有把「憑空掛上一塊虛擬螢幕」的能力開放給第三方。BetterDisplay、DeskPad 是這樣,OpenDisplay 也是這樣,沒有人能光明正大進 App Store。這是整個虛擬顯示器品類共同的處境;只是這個代價會在每次 macOS 大版本更新那天一起浮上來。

第二個代價是 WiFi 不加密。WiFi 模式目前沒有對區網裡的畫面傳輸做加密,等於你 Mac 螢幕上的內容,在那條區網裡是明文在跑。在家裡自己用的 Wi-Fi 上問題不大,但在咖啡廳、飯店、公司訪客網這種你信不過的環境,就別開 WiFi,直接接 USB 最穩,USB 本來就延遲更低、也適合久用。這也是它跟 Osaurus 那種強調全程不出機器的工具可以擺在一起看的地方:方向都是少把資料往外部送,只是 OpenDisplay 在 WiFi 這條路上還缺一道加密。
隱私這塊它倒可以講得比較硬氣。整個流程不經任何外部伺服器,就你這台 Mac 和你的設備之間一條直接連線,沒有帳號、沒有分析、沒有遙測,本地只留連線設定和配對資訊。官方還有一頁隱私說明,把兩個 App 各自存了什麼、WiFi 那條未加密的但書都寫清楚。所以它的隱私風險不在資料被收走,而在 WiFi 明文這個特定情境,而這個情境用一條 USB 線就繞過去了。
第一次跑起來,macOS 會跟你要三個權限,而且有些沒給也不會報錯,是直接靜默失效,這點最容易被誤會成 bug。螢幕錄製:用來擷取畫面,沒開的話手機上會一片黑。輔助功能:用來注入觸控和滾動,沒開的話你點螢幕毫無反應。區域網路:只在 WiFi 模式才需要,用來發現設備,沒開的話選單裡找不到你的手機,而且這個權限被拒時不會跳提示。手機端要連 WiFi 的話,也有一個區域網路權限要開。
Mac 端很貼心地做了一塊即時權限狀態面板,哪個沒開看一眼就知道;手機端則是搖一下或閒置時點 Settings 就進得去。連線時選單列還會亮起一個紫色的錄影指示燈,那是 macOS 對任何擷取螢幕的 App 都會顯示的隱私提示,Duet、Luna、OBS、Zoom 都會亮;隨航不亮,是因為它根本是做在系統裡、不走公開擷取 API,並不是它沒在錄。這個燈蘋果不讓 App 關,也不該關。
這是 OpenDisplay 工程上頗有意思、但對外很少講的一段。Mac 和 iPhone 兩個 App 是從同一個版本切出來的,但更新的速度完全不一樣:Mac 走 Sparkle,幾小時內就自動靜默更新到最新版;iPhone 走 App Store,加上使用者什麼時候按更新,往往要拖個幾天到幾週,還有一條長長的落後尾巴。也就是說,任何時刻線上都同時存在一堆新舊版本配對,最常見的是新 Mac 配舊 iPhone,反過來也會發生。
它處理這件事的辦法,是在連線時交換一組協定版本和「最低支援的對方版本」,兩邊談得攏就正常播,談不攏就提示該更新哪一邊,而不是直接壞掉。這套機制目前還算草稿階段,強制更新的那根槓桿還沒完整做好,不過方向是對的,畢竟在一個兩端更新節奏不同步的架構裡,誰來偵測不相容、誰來引導更新,是真正會影響體驗的工程問題。
還有一個設計細節值得提:它把 App 版本和協定版本分開。前者是你看到的那版號,跟著每次發布跳;後者是兩個 App 之間的接線契約,只有接線方式真的變了才動。所以多數時候你更新了 App,協定版本其實沒變,舊的對方依然連得上,不會被硬性升級。這種把使用者感知的版本和底層接線版本拆開的做法,目的是把兩端經常處於不同版本所帶來的衝擊壓到最小。
它需要兩個 App:Mac 端負責擷取和傳送,iPhone/iPad 端負責接收和顯示。入場券卡在 2023 年秋季以後的系統:Mac 要 macOS 14(Sonoma)起跳,行動裝置至少 iOS 或 iPadOS 17,再老的機器就算跑得動也吃不下這份安裝包。Mac 端那份 DMG 已經過簽章和蘋果公證,拖進 Applications 就完事,不會被 Gatekeeper 擋;iPhone 端走 TestFlight 公測,願意動手的人也能拉原始碼自編側載。
跑起來的流程不複雜:手機先開著 App(它在 port 9000 監聽),Mac 端開 App 會透過 usbmuxd 自動連上 USB;要 WiFi 就在連線選單挑一台。第一次會跟你要前面講的那三個權限,給完就能把視窗拖到新螢幕上。它跟 MoePeek、PasteMemo 一樣是 macOS 原生工具,跑起來輕量,不過因為吃螢幕擷取和輔助功能這兩個敏感權限,第一次設定時多留個心。
它最對味的情境是臨時副屏。出差時 Mac 桌面塞爆,副屏的價值在把次要視窗挪開讓主畫面淨空,而不是拿來做多視窗並排;把 iPad 橫放當閱讀面、iPhone 直立塞在邊邊當側欄,是它最順手的兩種擺法,直向那塊特別適合塞長條狀的內容。偶爾用的話,從 USB 模式開始最省事,FlowScroll 那類改變輸入體感的周邊工具也能一起搭。
會把它打成地雷的,是那種系統一升級就要求工具隔天照常開機的人,這個承諾 OpenDisplay 目前給不起:私有 API 在 macOS 大改時可能要等作者適配。如果你的工作環境連螢幕錄製權限都要走簽核、或區網全程禁錄,直接搬一台實體螢幕上桌省事得多。另外,聲音不會跟著畫面過去,手機那頭是啞的,音訊仍從 Mac 端出,放影片或視訊時要重新習慣一下聲音來源。
有可能。它建立虛擬螢幕靠的是蘋果未公開的 CGVirtualDisplay,這條私有管道在系統大改時可能被動到,到時得等專案重新適配。畫面擷取和串流本身用的是公開 API,相對穩定。這也是它進不了 App Store、只能放在 GitHub 的原因。
目前 WiFi 模式沒有加密區網裡的畫面傳輸。在自己家裡的 Wi-Fi 上問題不大,但在咖啡廳、飯店這類信不過的網路環境,建議改走 USB,不過網路也更穩。它全程不經過任何外部伺服器,畫面只在你這台 Mac 和你的設備之間跑。
支援。接收端 App 是通用版,iPhone 和 iPad 同一份程式碼,iPad 直著擺、橫著擺都行。iPad 專屬的 Apple Pencil 和壓感還沒做,官方列在後續計畫。
那是 macOS 對所有擷取螢幕的 App 都會顯示的隱私指示燈,Duet、OBS、Zoom 都會亮。隨航不亮,是因為它做在系統裡、不走公開擷取 API。這個燈蘋果不允許 App 關閉,屬於正常提示。
不會。目前只傳畫面和觸控操作,不同步音訊,聲音還是從 Mac 的喇叭或耳機輸出。官方也還沒上 HEVC 或 AV1,現階段是硬體 H.264 編碼。
OpenDisplay 真正的變數是那條蘋果沒公開的 CGVirtualDisplay,用它等於接受 macOS 大改時可能要等作者救火。只要這一點你過得了關,那台躺在抽屜裡的舊 iPhone,總算有了比吃灰更好的去處。