Mac 的平铺窗口管理。
关于
yabai 是一款窗口管理工具,旨在作为 macOS 内置窗口管理器的扩展。 yabai 允许你使用直观的命令行界面自由地控制窗口、空间(Spaces)和显示器,并可选地使用 ↗ skhd 和其他第三方软件设置用户自定义的键盘快捷键。
yabai 的主要功能是平铺窗口管理;它使用二叉空间分割算法自动调整你的窗口布局,让你能够专注于窗口内容而不受干扰。 yabai 的其他功能包括焦点跟随鼠标、禁用切换空间时的动画、创建超过 16 个空间限制的空间,以及更多功能。
安装与配置
- ↗ yabai wiki 提供了多种安装方法的简要和详细安装说明,并解释了如何完全卸载 yabai。
- 示例配置文件可以在 ↗ examples 目录中找到。请参阅 ↗ documentation 或 wiki 以获取更多信息。
- 可以使用 ↗ skhd 或任何其他你偏好的合适软件来定义键盘快捷键。
要求与注意事项
请仔细阅读以下要求。 在提交问题之前,请确保你满足所有要求。
| Requirement | Note |
|---|---|
| Operating System Intel x86-64 | 支持 Big Sur 11.0.0+、Monterey 12.0.0+、Ventura 13.0.0+、Sonoma 14.0.0+、Sequoia 15.0+ 和 Tahoe 26.0+。 |
| Operating System Apple Silicon | 支持 Monterey 12.0.0+、Ventura 13.0.0+、Sonoma 14.0.0+、Sequoia 15.0+ 和 Tahoe 26.0+。 |
| Accessibility API | 必须授予 yabai 使用 Accessibility API 的权限,该应用将在启动时请求访问。授予访问权限后,必须重新启动该应用。 |
| Screen Recording | 仅当您需要启用窗口动画时,才必须授予 yabai Screen Recording 权限,该应用将在必要时请求访问。授予访问权限后,必须重新启动该应用。 |
| System Preferences (macOS 11.x, 12.x) | 在 Mission Control 窗格中,必须启用“Displays have separate Spaces”设置。 |
| System Settings (macOS 13.x, 14.x, 15.x, 26.x) | 在 Desktop & Dock 选项卡中,Mission Control 窗格内,必须启用“Displays have separate Spaces”设置。 |
请注意以下注意事项。
| Caveat | Note |
|---|---|
| System Integrity Protection (Optional) | System Integrity Protection 可以(部分)禁用,以便 yabai 向 Dock.app 注入脚本扩展,从而使用需要提升权限的功能来控制窗口。这允许控制窗口服务器(window server),它是所有窗口连接的唯一所有者,并启用 yabai 的额外功能。 |
| Code Signing | 从源码构建(或从 HEAD 安装)时,必须对二进制文件进行代码签名(codesign),以便在更新或重新构建时保留其辅助功能(accessibility)和自动化(automation)权限。 |
| Finder Desktop | 有些人使用未记录的 defaults write 命令禁用 Finder 桌面窗口。这会破坏对空白区域的聚焦,在使用 yabai 时应避免这样做。要重新激活 Finder 桌面,请运行:"defaults write com.apple.finder CreateDesktop -bool true"。 |
| NSDocument-based Applications | 使用原生 macOS 标签页的窗口,例如 Terminal 和 Finder,在创建标签页时行为不正确。避免在这些应用中创建标签页,考虑使用不使用 NSDocument 标签页系统的替代方案,或使用规则使这些窗口浮动。 |
| System Preferences (macOS 11.x, 12.x) | 在 Mission Control 窗格中,应禁用“根据最近使用情况自动重新排列空间”(Automatically rearrange Spaces based on most recent use)设置,以便依赖空间顺序的命令能够可靠地工作。 |
|系统 设置 (macOS 13.x, 14.x, 15.x, 26.x)|在“桌面与程序坞”标签页中,在“调度中心”窗格内,对于依赖空间顺序才能可靠运行的命令,应禁用“根据最近使用情况自动重新排列空间”设置。| |系统 设置 (macOS 14.x, 15.x, 26.x)|在“桌面与程序坞”标签页中,在“桌面与台前调度”窗格内,对于多显示器配置下显示和空间聚焦命令的可靠运行,应启用“在桌面上显示项目”设置。| |系统 设置 (macOS 14.x, 15.x, 26.x)|在“桌面与程序坞”标签页中,在“桌面与台前调度”窗格内,对于显示和空间聚焦命令的可靠运行,应将“点击壁纸以显示桌面”设置为“仅在台前调度中”。|
许可与署名
yabai 采用 ↗ MIT 许可协议 授权,这是一种简短且宽松的许可协议,其条件仅要求保留版权和许可声明。 受许可的作品、修改版本以及更大的作品可以在不同条款下分发,且无需提供源代码。
感谢 @fools-mate 为本项目创建标志和横幅,并免费开放使用。
感谢 @dominiklohmann 免费贡献了出色的文档、支持及其他内容。
免责声明
请自行酌情使用。 如果您在安装、测试或以其他方式以任何形式使用本软件期间,您的机器发生任何问题,我概不负责。 您确认您了解在您的系统上禁用 ↗ 系统完整性保护 可能带来的潜在风险,且我不对是否应禁用系统完整性保护提出任何建议。