把 iPad 当 Mac 的第二块屏幕,Sidecar 是苹果官方方案。但如果你用的是 Mac mini(没有自己的屏幕),远程 SSH 进去想控制 Sidecar 就没那么简单了。
折腾了一圈,最后能用的一共三套方案。
三种方案对比
| 方案 | 原理 | 响应速度 | 可靠性 |
|---|---|---|---|
| SidecarLauncher (主力) | 调用 Apple 私有 SidecarCore.framework 框架 |
~1s | ✅ 极高 |
| Hammerspoon AX (备选) | 遍历系统设置界面 AX 元素,模拟点击 | ~3s | ✅ 高 |
| computer_use (备选) | 通过 cua-driver 在后台操作 UI | ~5s | ✅ 中 |
方案一:SidecarLauncher(推荐)
用 Swift 直接调用 Apple 的私有框架,不需要任何 GUI 交互,秒级响应,有线优先自动走无线。
sidecar status # 查看连接状态
sidecar on # 连接(有线优先)
sidecar off # 断开
sidecar devices # 列出可用设备
已封装成 shell 函数加到 ~/.zshrc:
sidecar() {
local cmd="${1:-status}"
case "$cmd" in
on|connect)
if system_profiler SPDisplaysDataType 2>/dev/null | grep -q "Sidecar Display"; then
echo "✅ 已连接"; return
fi
echo "→ 连接 Sidecar..."
~/.local/bin/SidecarLauncher connect "camac-iPad" 2>&1
;;
off|disconnect)
echo "→ 断开 Sidecar..."
~/.local/bin/SidecarLauncher disconnect "camac-iPad" 2>&1
;;
devices)
~/.local/bin/SidecarLauncher devices 2>&1
;;
status|*)
if system_profiler SPDisplaysDataType 2>/dev/null | grep -q "Sidecar Display"; then
echo "✅ 已连接"
else
echo "❌ 未连接"
fi
;;
esac
}
方案二:Hammerspoon
通过 hs.axuielement 遍历系统设置 → 显示器页面的 AX 树,找到目标按钮模拟点击。
关键坑: 不能用一个 hs -c 脚本内嵌 hs.timer.usleep 等待菜单,实测不可靠。必须拆成多步,每步之间用 shell sleep 等待。
# 1. 打开系统设置 → 显示器
open "x-apple.systempreferences:com.apple.Displays-Settings.extension"
sleep 2
# 2. 点击 ⚙️ 齿轮 → Mirror or extend to → 选 iPad
# 每步之间 sleep 1s
方案三:computer_use (Hermes Agent)
用 cua-driver 在后台系统设置界面中操作,全程不抢光标、不切 Space。
# 1. 打开系统设置 → 显示器
open "x-apple.systempreferences:com.apple.Displays-Settings.extension"
sleep 1
# 2. capture → 找到右下角 "+" 按钮 → 点击 → 选 iPad → 验证
确认不可行的方案
这些方案都试过,彻底走不通:
| 方案 | 为什么不行 |
|---|---|
| macOS 快捷指令 | 没有 Sidecar 动作,x-apple.sidecar:// URL scheme 未注册 |
| BetterDisplay | 只管理已有显示器,不能发起 Sidecar 连接 |
| AppleScript | 没有 Sidecar 接口 |
| SidecarDisplayAgent | 外部启动被 SIP 拦截 |
| 所有 URL scheme 变体 | 均返回 kLSApplicationNotFoundErr |
使用体验
Sidecar 走的是 AirPlay 协议,镜像模式下 iPad Pro 跑 60Hz 很流畅。有线连接延迟最低(~20ms),无线在 5GHz Wi-Fi 下也够用。
日常使用场景:
- 投屏看剧 — iPad 当镜像屏,Mac mini 播视频直接投过去
- 远程调试 — SSH 进去
sidecar on,iPad 自动连上 - 自动化脚本 — 定时任务开关 Sidecar,省电
macOS 26.x 的注意点
苹果在 macOS 26.x 取消了独立的 Sidecar 设置页,入口挪到了:系统设置 → 显示器 → 虚拟显示器右下角 ⚙️ → “Mirror or extend to” → 选 iPad。
但命令行连接不受影响,SidecarLauncher 直接调用底层框架,不依赖 UI 入口。
本文由 AI 辅助生成