Bili-Docs
技术工具效率工具

和我一起配置yabai

详细演示了 macOS 平铺式窗口管理器 yabai 及其配套工具 skhd 和 JankyBorders 的安装与配置流程。

UP主: 帕特里柯基 · 时长: 5:38 · 🔗 B站原视频

发布: 2024-03-03 · 收录: 2025-07-26

标签: macOS · yabai · 效率工具 · 窗口管理 · skhd

yabai 是什么:堆叠式 vs 平铺式

今天我们来聊聊 macOS 上的平铺式窗口管理器 yabai。在 macOS 中,窗口管理主要分为堆叠式和平铺式。

堆叠式管理方式中,窗口可以相互交叠。macOS 默认的窗口管理就属于堆叠式。

平铺式则强制要求 100% 的桌面空间利用率,让窗口占据各自的空间,不相互重叠。如果你是 Mac 用户,又偏好平铺式,就可以试试 yabai。

安装 yabai 并放置配置文件

安装 yabai 可以通过 Homebrew。安装结束后,在终端输出的信息中找到 yabai 提供的初始配置文件。

我们需要把它复制到本地的 yabai 配置目录下。我不习惯把配置文件放在根目录下,所以这里我选择在 ~/.config 目录下创建叫 yabai 的目录,再把配置文件复制进去。yabai 也能识别这个路径下的配置文件,所以效果是相同的。

启动 yabai 与权限设置

有了配置文件后,我们就可以启动 yabai 了。

但是 yabai 会要求提供辅助功能权限,给就行,然后重启 yabai。可以看到终端窗口自动铺满屏幕了。

此时 yabai 还会要求提供屏幕录制权限。官方解释是某些窗口动效需要这个权限。由于我个人不在乎窗口动效,所以这里我不管它。

调整间隙与鼠标修饰键

现在我们来修改 yabai 提供的配置文件。默认配置已经符合大多数人的使用习惯了,所以我想尽量保留。

你可以通过相关配置来调整窗口之间的间隙。滚动到文件底部,我个人习惯把鼠标修饰键从 fn 改成 alt

为了使修改后的配置生效,我新建一个终端运行命令重启 yabai。现在我已经可以按住键盘上的 alt 键,然后通过鼠标拖拽来控制窗口了。

排除不想被管理的应用窗口(规则示例)

如果我们不希望 yabai 管理某些应用的窗口,比如系统设置,该怎么办?yabai 提供了很多细化的管理规则。

在配置文件中加入一行规则,意思是只要应用的名称是 System Settings 或者“系统设置”,就不管理它。重启 yabai 后,就可以随意拖拽系统设置的窗口了。

再举个例子:我希望 yabai 只管理 B 站客户端的主窗口,但让我可以自由拖拽视频窗口。只需要加入一行规则:意思是对于应用“哔哩哔哩”,如果它的标题不等于某个指定标题,就不管理它。

再次重启后,yabai 会发现 B 站客户端主窗口自动平铺,但是随便打开一个视频后,可以自由拖拽视频窗口。

你可能会问我是如何知道这么复杂的窗口名称的。只要运行一行命令,就可以获取所有窗口的信息。

安装 JankyBorders(窗口边框高亮)

评论中有很多朋友问窗口的边框高亮是怎么实现的,这是一个叫 JankyBorders 的 yabai 附属软件,在它的 GitHub 页面下可以找到安装教程。

首先通过 Homebrew 安装,然后在 yabai 的配置文件结尾处加上一行配置,再重启 yabai,就有窗口边框高亮效果了。边框的颜色、宽度和发光效果都是可以调整的,方法很简单,大家可以自行参考刚刚的 GitHub 页面。

安装与配置 skhd(绑定快捷键操作窗口)

yabai 除了自动平铺窗口之外,还能对窗口做各种操作。可惜在不借助任何其他工具的情况下,这些操作只能通过命令行实现。

比如这里我有两个窗口,不使用鼠标的情况下,我可以通过 yabai 命令来切换窗口的激活状态、交换窗口位置等。可我们总不能每次调整窗口都打开终端来执行命令。

yabai 的作者考虑到了这一点,写出了 skhd。skhd 可以帮你将任何 yabai 命令绑定到任意的键盘快捷键。

skhd 也可以通过 Homebrew 安装。安装结束后,同样给予辅助功能权限。在终端输出的信息中复制初始配置文件的路径,然后在 ~/.config 目录下创建 skhd 目录,再把初始配置文件复制进去。

用 Neovim 打开 skhd 的配置文件,里面有很多说明,感兴趣的朋友可以自行阅读。这里我把文件清空,然后加入内容:

  • 通过 control + command + HJKL 切换窗口的激活状态
  • 通过 control + alt + HJKL 交换窗口位置

保存文件后重启 skhd,这时快捷键已经生效了。

SIP(系统完整性保护)是否要关闭

yabai 提供十分丰富的窗口、桌面操作命令,加之它可以配合 shell script 来使用,更是大大增加了它的灵活性。大家可以前往它的 GitHub 页面下自取所需。

值得一提的是,要获得 yabai 的完整体验,可能需要关闭系统完整性保护(SIP)。关闭 SIP 后增加的小部分功能对我来说可有可无,而且我认为安全性大于一切,所以我并没有关闭 SIP,这一点请大家自行决定。

结尾

这就是本期视频的全部内容,我们下期视频再见。

On this page