终端无法切换主屏幕,因为macOS的Quartz Display Services不提供命令行API,主屏标识只能通过图形界面在“系统设置→显示器”中勾选“用作主显示器”完成,任何脚本均无法真正更改该设置。

Mac终端无法直接用命令切换主屏幕,因为系统设置中“用作主显示器”选项不开放终端接口,必须通过图形界面操作完成。
为什么终端不能切换主屏幕
macOS 将主屏幕设定为系统级显示配置,由 Quartz Display Services 管理,该服务不提供命令行可调用的 API。所有涉及“菜单栏位置”“程序坞归属”“窗口默认弹出屏”的行为,都绑定在 GUI 设置流程中,【任何声称能用 defaults write 或 osascript 一键切换主屏幕的脚本,实际只会移动窗口、不会改变主屏标识】。
尝试用 AppleScript 模拟点击“用作主显示器”复选框会失败——System Events 无权操作显示器设置面板内的受保护控件。
必须用图形界面完成的两步操作
第一步:打开系统设置 → 显示器
第二步:在显示器布局图中,点击目标屏幕 → 勾选“用作主显示器”
这一步不可跳过,也没有替代路径。系统会立即把白色菜单栏横条拖到所选屏幕顶部,并将新启动的应用窗口默认导向该屏。若未勾选,即使把所有窗口拖过去,它仍是副屏。
终端能做的辅助动作(仅限窗口归位)
方法一:把当前所有可见窗口移到主屏幕左上区域(需知主屏分辨率)
执行:osascript -e 'tell application "System Events" to repeat with i in (every process whose background only is false) do tell i to repeat with w in (windows where visible is true) do set bounds of w to {0, 0, 1920, 1080} end repeat end repeat'
⚠️ 注意:{0, 0, 1920, 1080} 是示例值,必须替换成你主屏的实际像素宽高,否则窗口会被裁切或偏移。
方法二:用 rectangle 工具实现精准窗口迁移(需提前安装)
执行:rectangle --move-to-display primary
这要求已通过 Homebrew 安装 rectangle:brew install --cask rectangle,且工具权限已在“系统设置→隐私与安全性→自动化”中授予。

















