跳转到内容

平铺窗口管理器: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。

动手练习 ​

不改任何系统安全设置,完成一次评估:

  1. 按软件库页面装好 AeroSpace,只用默认配置。
  2. 打开四个窗口,用键盘完成:切换焦点、交换两个窗口位置、把一个窗口送到另一个工作区。
  3. 记录一周中你有多少次需要跨 macOS 原生空间操作窗口。
  4. 用 csrutil status 确认 SIP 仍然开启——这一步是确认你没有在跟教程时误改设置。

成功标准是拿到第 3 步那个数字,并且能说出你的选择理由。选 AeroSpace、选基础模式的 yabai、选关闭 SIP 的 yabai 都是合理结论;说不出理由地关闭 SIP 不是。

返回键盘、输入与窗口