Mac系统的平铺式窗口管理工具。
关于
yabai 是一个窗口管理工具,旨在作为 macOS 内置窗口管理器的扩展。yabai 允许你使用直观的命令行界面自由控制窗口、空间和显示器,还可以选择使用 [↗ skhd][gh-skhd] 和其他第三方软件设置用户自定义的键盘快捷键。
yabai 的主要功能是平铺式窗口管理;使用二叉空间分割算法自动修改窗口布局,让你专注于窗口内容而不受干扰。yabai 的其他功能包括鼠标跟随焦点、禁用切换空间的动画、创建超过 16 个空间的限制等等。
安装和配置
- [↗ yabai wiki][yabai-wiki] 提供了多种安装方法的简要和详细说明,还解释了如何完全卸载 yabai。
- 在 [↗ examples][yabai-examples] 目录中可以找到示例配置文件。更多信息请参考 [↗ 文档][yabai-docs] 或 wiki。
- 可以使用 [↗ skhd][gh-skhd] 或其他适合的软件定义键盘快捷键。
要求和注意事项
请仔细阅读以下要求。 在提交问题之前,请确保满足所有要求。
要求 | 说明 |
---|---|
操作系统 Intel x86-64 | 支持 Big Sur 11.0.0+、Monterey 12.0.0+、Ventura 13.0.0+ 和 Sonoma 14.0.0+。 |
操作系统 Apple Silicon | 支持 Monterey 12.0.0+、Ventura 13.0.0+ 和 Sonoma 14.0.0+。 |
辅助功能 API | yabai 必须获得使用辅助功能 API 的权限,并将在启动时请求访问。授予权限后必须重启应用程序。 |
屏幕录制 | 如果你想启用窗口动画,yabai 必须获得屏幕录制权限,并在必要时请求访问。授予权限后必须重启应用程序。 |
系统偏好设置(macOS 11.x, 12.x) | 在调度中心面板中,必须启用"显示器具有单独的空间"设置。 |
系统设置(macOS 13.x, 14.x) | 在桌面与程序坞标签中的调度中心面板内,必须启用"显示器具有单独的空间"设置。 |
请同时注意以下事项。
注意事项 | 说明 |
---|---|
系统完整性保护(可选) | 可以(部分)禁用系统完整性保护,让 yabai 将脚本添加注入到 Dock.app 中,以使用需要提升权限的函数控制窗口。这样可以控制窗口服务器(所有窗口连接的唯一所有者),并启用 yabai 的其他功能。 |
代码签名 | 从源代码构建(或从 HEAD 安装)时,必须对二进制文件进行代码签名,以便在更新或重新构建时保留其辅助功能和自动化权限。 |
访达桌面 | 有些人使用未公开的 defaults write 命令禁用了访达桌面窗口。这会导致无法聚焦空白空间,使用 yabai 时应避免这样做。要重新激活访达桌面,请运行:"defaults write com.apple.finder CreateDesktop -bool true"。 |
基于 NSDocument 的应用程序 | 使用原生 macOS 标签的窗口(如终端和访达)在创建标签时无法正常工作。避免在这些应用程序中创建标签,考虑使用不使用 NSDocument 标签系统的替代方案,或使用规则使这些窗口浮动。 |
系统偏好设置(macOS 11.x, 12.x) | 在调度中心面板中,应禁用"根据最近使用情况自动重新排列空间"设置,以确保依赖空间排序的命令可靠工作。 |
系统设置(macOS 13.x, 14.x) | 在桌面与程序坞标签中的调度中心面板内,应禁用"根据最近使用情况自动重新排列空间"设置,以确保依赖空间排序的命令可靠工作。 |
系统设置(macOS 14.x) | 在桌面与程序坞标签中的桌面与舞台管理器面板内,应启用"在桌面上显示项目"设置,以确保在多显示器配置中显示和空间聚焦命令可靠工作。 |
系统设置(macOS 14.x) | 在桌面与程序坞标签中的桌面与舞台管理器面板内,"点击壁纸以显示桌面"设置应设为"仅在舞台管理器中",以确保显示和空间聚焦命令可靠工作。 |
许可和致谢
yabai 采用 [↗ MIT 许可证][yabai-license],这是一个简短且简单的许可证,只要求保留版权和许可声明。许可的作品、修改和更大的作品可以在不同的条款下分发,无需提供源代码。
感谢 [@fools-mate][gh-fools-mate] 为这个项目创建了免费的标志和横幅。
感谢 [@dominiklohmann][gh-dominiklohmann] 无偿贡献了出色的文档、支持等内容。
免责声明
使用风险自负。 如果在尝试安装、测试或以任何形式使用本软件时,您的机器发生任何问题,我不承担任何责任。 您承认理解在系统上禁用 [↗ 系统完整性保护][external-about-sip] 可能带来的潜在风险,我不对是否应该禁用系统完整性保护做出任何建议。