把 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 辅助生成