外观
平铺窗口管理器:yabai 与 AeroSpace 的取舍
系统自带的平铺只能把窗口摆成固定的几种组合。平铺窗口管理器做的是另一件事:新窗口打开时自动排进布局,全部操作用键盘完成,手不离开主键区。
这一篇不教安装——那部分在软件库页面。这里只回答一个问题:两种方案的实现原理不同,导致代价完全不同,你该选哪个。
开始之前
需要熟悉系统的窗口与空间操作,见第八篇:提高效率。安装与权限授予见AeroSpace 软件页。
先确认你真的需要它。只是想把两个窗口各放半屏,系统自带平铺或 Moom 这类工具就够了,学习成本低得多。平铺管理器适合的是窗口数量多、且你愿意用键盘记忆替代鼠标定位的工作方式。
核心差异:谁在控制窗口
macOS 的窗口服务器由 Dock.app 独占连接。想做「把窗口移到另一个空间」这类操作,普通程序没有权限。
yabai 的做法是往 Dock.app 里注入一个 scripting addition,借用那条连接。这需要部分关闭 SIP(系统完整性保护),因为 SIP 正是用来阻止这种注入的。yabai 项目说明
AeroSpace 的做法是不碰窗口服务器:它只用一个私有 API 获取窗口标识,其余全部走公开的辅助功能接口,并且用自己模拟的工作区替代 macOS 空间——绕开了需要特权的那块区域。项目明确声明永远不会要求关闭 SIP。AeroSpace 项目说明
一句话概括:yabai 能力更强但要拆掉一层系统保护,AeroSpace 能力有边界但不动系统。
关于 SIP 的立场
本手册在常见优化建议的证据核对里说过「不要为了提速关闭 SIP」。这里的情况不同,需要说清楚区别:
那里反对的是没有依据的性能说法——关闭 SIP 不会让机器变快。这里是明确的功能交换:你放弃一部分系统保护,换取具体的、可以列举的窗口操作能力。这是一个真实的取舍,不是被忽悠。
取舍要在知情的前提下做。关闭 SIP 之后:
- 受保护的系统目录不再只读,恶意软件修改系统文件的门槛降低。
- 在 Intel Mac 上,关闭会移除该物理存储设备上所有分区的保护。
- 到 Apple 直营店或授权服务商维修后,SIP 会被重新开启,你需要再做一次。
csrutil status可以查看当前状态,csrutil enable(在恢复模式中执行)可以恢复。
yabai 作者本人的表述是:他对是否应当关闭 SIP不作推荐,使用者需自行承担风险。这个态度值得原样转达。
不关闭 SIP 时,yabai 还剩什么
这是决定前最该知道的一项。不装 scripting addition 时,yabai 仍然工作在基础模式:大多数应用的自动平铺布局仍然可用。
失去的是这些:
| 功能 | 是否需要部分关闭 SIP |
|---|---|
| 自动平铺布局 | 否 |
| 调整窗口大小与位置 | 否 |
| 切换焦点 | 否 |
| 创建、销毁、切换空间 | 是 |
| 把窗口移到另一个空间 | 是 |
| 窗口透明度、去除阴影、窗口动画 | 是 |
所以还有第三个选项常被忽略:装 yabai 但不关闭 SIP,只用布局功能。对很多人来说这已经够了。
两者都要注意的系统设置
无论选哪个,都要先检查几项系统设置,否则行为会很奇怪:
- 「显示器具有单独的空间」需要开启(在调度中心或「桌面与程序坞」设置中,位置随版本不同)。
- 「根据最近使用情况自动重排空间」建议关闭,否则和空间顺序有关的命令结果不可预测。
- 使用系统原生标签页的应用(访达、终端)在创建标签页时行为不正常,通常用规则让它们浮动。
权限方面,两者都需要辅助功能授权;yabai 的窗口动画另外需要屏幕录制权限。授权后需要重启应用才生效。这类权限的含义见TCC 隐私授权。
快捷键要另外配
yabai 本身不处理快捷键,通常配合 skhd 使用;AeroSpace 内置快捷键配置。也可以用 Hammerspoon 统一管理,把窗口命令和其他热键放在同一份配置里。
AeroSpace 目前仍在 1.0 之前,配置格式可能出现破坏性变更;升级前先看发布说明。把配置纳入版本库能让这类变更可回滚,见用版本库管理 dotfiles。
检查结果
先在不改变 SIP 的前提下试用一周。观察三件事:你是否真的用键盘而不是鼠标切换窗口;哪些应用的布局表现异常;你有多少次想做「把窗口扔到另一个空间」这个动作。
第三项的次数就是你的决策依据。一周里想做这个动作的次数接近零,就没有理由为它关闭 SIP。
动手练习
不改任何系统安全设置,完成一次评估:
- 按软件库页面装好 AeroSpace,只用默认配置。
- 打开四个窗口,用键盘完成:切换焦点、交换两个窗口位置、把一个窗口送到另一个工作区。
- 记录一周中你有多少次需要跨 macOS 原生空间操作窗口。
- 用
csrutil status确认 SIP 仍然开启——这一步是确认你没有在跟教程时误改设置。
成功标准是拿到第 3 步那个数字,并且能说出你的选择理由。选 AeroSpace、选基础模式的 yabai、选关闭 SIP 的 yabai 都是合理结论;说不出理由地关闭 SIP 不是。