← 返回全部文章

旧 iPad 变 Mac 副屏,这个开源工具省下一笔钱

OpenDisplay 可以把 iPhone、iPad 变成 Mac 的扩展屏,免费开源,支持 USB/WiFi、触控和 Retina 显示,但也有权限和 WiFi 安全边界。

Mac 用户有个很具体的痛点:桌面不够用。

写文档时想把资料放旁边,开会时想把聊天窗口挪出去,写代码时想把日志、终端、预览分开看。家里明明躺着一台旧 iPad,甚至还有一台旧 iPhone,但 Apple 官方 Sidecar 有限制:两台设备要登录同一个 Apple ID,iPhone 也不在支持范围里。

最近一个开源项目 OpenDisplay 火了。它做的事很直接:把 iPhone 或 iPad 变成 Mac 的第二块屏幕。它走的是扩展显示器路线,macOS 会把这台设备当成一块真实屏幕。窗口可以拖过去,系统设置里也能按显示器方式排列。

它解决的就是副屏这件小事

OpenDisplay 的定位很清楚:免费、开源、无账号、无订阅、无硬件 dongle 。

它对标的是几类常见方案:

  • Apple Sidecar:免费,但依赖同一个 Apple ID,且不支持 iPhone 。
  • Duet Display:成熟,但已经转向订阅。
  • Luna Display:体验稳定,但需要硬件 dongle 。

OpenDisplay 选择了另一个路线:Mac 端创建虚拟显示器,捕获画面,用 H.264 硬件编码传到 iPhone / iPad;移动设备端解码显示,再把触控、滚动等输入传回 Mac 。

官方 README 里给出的链路很清楚:Mac 通过 CGVirtualDisplay 创建虚拟显示器,用 ScreenCaptureKit 捕获画面,再用 VideoToolbox 做 H.264 编码。 iPhone / iPad 端用 AVSampleBufferDisplayLayer 渲染画面。触控数据反向传回 Mac 后,变成点击、拖拽和滚动。

先看它能做什么

几个功能对普通用户最有用:

  • 支持真实扩展屏。 Mac 可以把它当第二显示器用,窗口能跨屏拖动。
  • 支持 USB 和 WiFi 。 USB 延迟更低,也不依赖局域网;WiFi 更方便,靠 Bonjour 自动发现设备。
  • 支持 Retina / HiDPI 。虚拟显示器会按设备面板做 @2x 显示,文字不会糊成一片。
  • 支持触控。点按、拖拽、双指滚动都能传回 Mac,相当于给 Mac 多了一块小触屏。
  • 支持横竖屏。设备旋转后,虚拟显示器可以重建成竖屏,适合放聊天、日志、文档。
  • 支持多设备。官网写到,iPhone 、 iPad 可以同时作为扩展显示器使用,已测试到三块外接设备。

这类工具最适合几种场景:

  • 旧 iPad 当临时副屏,放资料、文档、聊天窗口。
  • iPhone 竖屏放监控面板、终端日志、会议聊天。
  • 出差时少带一块便携屏,用已有设备凑一个双屏工作台。
  • 家里多人设备混用,不想被同一个 Apple ID 卡住。

怎么上手

OpenDisplay 要装两个 App:Mac 端负责发送画面,iPhone / iPad 端负责接收显示。

Mac 端:

  1. 打开 GitHub Release 页面:https://github.com/peetzweg/opendisplay/releases/latest
  2. 下载 OpenDisplay.dmg
  3. 打开 dmg,把 App 拖进 Applications 。
  4. 当前版本的 Mac App 已签名并通过 Apple notarization,官方写明 macOS 14+ 可以正常双击打开。

iPhone / iPad 端:

  1. App Store 链接:https://apps.apple.com/app/id6780264891
  2. 也可以加入 TestFlight:https://testflight.apple.com/join/3NYaY11c
  3. 想自己编译,也可以用 Xcode 从源码跑。

如果从源码构建,官方给的最短路径是:

brew install xcodegen

git clone https://github.com/peetzweg/opendisplay.git
cd opendisplay
echo "DEVELOPMENT_TEAM=YOURTEAMID" > .env
./generate.sh

然后在 Xcode 里分别运行 Mac 和 iOS target,或者按 README 里的 xcodebuild 命令构建。

USB 模式更适合认真干活

第一次用,建议先走 USB 。

流程大概是:

  1. 在 iPhone / iPad 上打开 OpenDisplay,让它监听连接。
  2. Mac 上打开 OpenDisplay 。
  3. 用数据线连接两台设备。
  4. 按 macOS 提示授予 Screen Recording 和 Accessibility 权限。
  5. 把窗口拖到新显示器上。

这两个权限别跳过:Screen Recording 用来捕获虚拟显示器画面;Accessibility 用来把触控和滚动变成 Mac 上的鼠标事件。少一个,体验都会出问题。比如手机黑屏,通常要先查 Mac 的录屏权限;触控没反应,就查辅助功能权限。

WiFi 模式也能用。打开移动端 App 后,在 Mac 端 Connection 菜单里选择设备即可。 WiFi 发现依赖 Local Network 权限,Mac 和 iPhone / iPad 两边都要打开,并且要在同一个局域网里。

它也有边界

OpenDisplay 很吸引人,但别把它当成“官方 Sidecar 完美平替”。有几个边界要提前知道。

第一,它用了 CGVirtualDisplay 这类私有 CoreGraphics API 。 README 也写得很直白:这正是它不能走 Mac App Store 的原因。直接下载的 Mac App 已签名,但这类实现仍然更适合愿意折腾、能接受开源工具维护节奏的人。

第二,WiFi 传输目前没有加密。项目的隐私页写得很清楚:USB 是点对点通过线缆传输;WiFi 模式下,视频流现在会在本地网络里明文传输。同一个网络里的其他人理论上可能观察到视频流。所以在家里、办公室可信网络里问题不大,公共 WiFi 、酒店 WiFi 更建议用 USB 。

第三,它还在快速迭代。 GitHub 最新 Release 是 v0.11.0,仓库目前有几十个 open issues 。适合尝鲜和日常轻办公,但如果是重要演示、直播、远程答辩,最好先在自己的设备上完整跑一遍。

我会怎么用

如果手里有闲置 iPad,OpenDisplay 很值得试。

我的建议是:先别急着把它替换成主力生产力设备。先用 USB 模式跑一周,只拿来放低风险窗口:资料页、聊天、日志、播放控制、 Todo 列表。稳定后,再试 WiFi 和多屏。

它最有意思的地方不在“白嫖一个付费软件”。更准确地说,它把一台快要吃灰的设备重新拉回工作流里。对很多人来说,这比再买一块便携屏更实际。

源地址:

  • GitHub:https://github.com/peetzweg/opendisplay
  • 官网:https://peetzweg.github.io/opendisplay
  • Mac 下载:https://github.com/peetzweg/opendisplay/releases/latest
  • iOS App Store:https://apps.apple.com/app/id6780264891

来源:https://github.com/peetzweg/opendisplay