用Mac不用它,你的Mac白买了 —— 平铺式窗口管理器yabai
介绍 macOS 上的平铺式窗口管理器 yabai,讲解其提升多窗口切换效率的优势、安装配置方法及快捷键使用。
UP主: TheCW · 时长: 17:21 · 🔗 B站原视频
标签: Mac · yabai · 效率工具 · 窗口管理 · 生产力
为什么推荐 yabai
嗨大家好,今天我想给大家推荐一个 Mac 下必备的软件,叫做 yabai。如果你在用 Mac,还不用 yabai 的话,那你真的 Mac 白买了。哈哈,我知道这件事是因为我之前也没在用 yabai,后来我用上以后,我发现我的天呐,效率大大提升。它的使用体验,真的是可以说让你的 Mac 接近一个桌面 Linux 的使用体验。虽然当时很多功能还是没有桌面 Linux 功能全,但是它已经能达到基本的平铺式窗口管理的需求了。
平铺式窗口管理器的优势
为什么说这个功能需要呢?对于没有用过平铺式窗口管理器的朋友们,我来简单解释一下。很多时候你需要在几个窗口之间来回切换,如果 Mac 本身不加任何其他软件的话,你一般是用触控板去来回滑动。这种方法可以,但是你总是需要浪费时间划来划去。但是有一个窗口管理器以后,你就可以在这几个桌面之间来回快速切换。比如说大家看一下,我现在有好几个桌面,你可以在这好几个桌面之间来回快速切换。
这个的好处,比如说你现在正在编辑一个文件,一边还想看一看文档,那你可以在文档和编辑器之间来回切换,写一些东西,看一下文档。如果你有多个显示器的话,这个同样非常好用。如果你没有多个显示器,用笔记本拿到外面的话,这个真的尤其好用。需要在一个或多个窗口之间来回切换,是非常基本的一个需求。
窗口移动与自动布局
不仅是这样,它还可以把你的窗口在好几个桌面之间来回移动。举个例子,现在我想把第二个桌面里面的文档拿到第一个桌面里面去,我就可以直接用快捷键把它拿到第一个桌面,跟第一个桌面做一个合并,第二桌面就空了。第一个桌面有这两个程序,我可以把这两个程序换一个位置,更改它们大小,都可以通过快捷键来完成。yabai 就负责去帮我管理这个桌面。
如果我现在想加一个新的 Finder 窗口,窗口管理器就可以很方便地把窗口按照最大化屏幕占用效率的方法分布起来。我先把这个窗口移回去。今天我想介绍一下 yabai 的安装和配置。因为这个东西安装起来稍微有点麻烦,这也是劝退了很多人的一个原因,但是它带来的收益实在是太大了,所以我觉得花时间投入装上这个东西是非常值得的。它还有很多其他的功能,我这里面介绍的就是它最主要、提供最直接的一个方面:快速切换桌面,还有把窗口移动到其他的桌面上去。其他的很多功能都在文档里面,今天我也会带着大家去看一下这个文档。废话不多说,我们赶紧开始吧。
安装前的准备工作:系统版本与关闭 SIP
首先第一件事情我要说明的,马上 6 月就要 WWDC 了,苹果用户都知道 6 月就要开发者大会了。如果你想用 yabai 的话,建议大家不要去装 Beta 版。因为每年苹果发的新的系统一般含虫量会巨大,而且会改很多东西。所以第一件事情想跟大家说,如果你想立马去升 Beta,不管你是有开发需求还是只想玩一玩,提前跟你说一下。
第二件事情,你要关掉你的 SIP,就是 System Integrity Protection,系统完整性保护。它把你的一些文件夹锁起来,就算你是 root 用户也没法更改,你需要把它关掉。如果你想装 yabai 的话,你必须要把它关掉。我首先说一下,关掉系统完整性保护完全没有问题。它所保护的事情就是就算你有 root 权限,你也不能对这几个文件夹进行更改。如果你害怕关掉这个的话,你先要想想,你为什么给了那些不该给的软件 root 权限呢?呵呵。所以我想声明一下,你需要关掉 Mac 下的系统完整性保护。
怎么关呢?你最好在手机上打开文档,重启你的电脑。重启电脑的时候,按住 Command 加 R,它会进入恢复模式。在恢复模式里面点实用工具,打开终端,输入这个命令就好了。关掉以后,你就可以开始安装 yabai 了。
使用 Homebrew 安装 yabai
安装 yabai 的方法很简单,在 yabai 的文档这里写一个 brew install,把这个命令复制一下就好了。yabai 的官方文档大家可以搜到,进到 GitHub 的仓库,上面有一个 Wiki。在 Wiki 里面右边可以看一下,有 Install Release Version,就是去安装它的稳定版。这里面就有这些命令了,复制一下,运行 brew。如果你没有的话,可以上 brew.sh 去安装一下。这是 Mac 下最火的包管理器,一般大家用 Mac 开发的话肯定都安装过。没有安装的话,上这里面装一下。
配置 sudo 权限与获取 Hash
接下来你要做的事情有两个。一件事情就是装完以后,你要去运行一下这个命令,去拿到 yabai 这个 binary 的 hash。我在这里运行一下,运行完以后能看到这里是我 yabai 的 hash,大家把这个 hash 复制一下。
复制完之后,大家去编辑一下 sudoers 文件,给 yabai 这个命令 sudo 权限。你得用 sudo 编辑一下 /etc/sudoers 这个文件。在最后把这一行复制过去,用户名填你的用户名,把 hash 改成你刚才复制的那个 hash。然后把 yabai 改成 yabai 命令的地址。yabai 命令的地址你可以通过 which yabai 来得到,我在 /opt/homebrew/bin/yabai 里面。编辑完以后写入一下,如果提示 read-only,你写一个强行写入 w! 就好了。写入完以后退出一下,按理说你就可以开始使用 yabai 了。
注入脚本实现桌面切换
不好意思,我注意到漏说了一点。装完 yabai 运行以后,你需要运行一个命令,得用 sudo 权限:yabai --load-sa。它是把自己的脚本注入到系统的 Dock.app 里面,也就是通过这个方法来实现桌面切换这些功能。待会儿我也会说 yabai 的配置,配置里面可以写自动去执行 yabai --load-sa 这个脚本。我想说一下,如果你运行了 yabai,执行指令的时候没有效果的话,很可能是没有运行 --load-sa 这个指令。好了继续。
启动与停止 yabai 服务
现在 yabai 正在运行,比如说我想去改窗口大小,它会给我调整回去。我先把 yabai 停掉,可以用 yabai --stop-service 来停掉它。现在能看到窗口可以移动了,yabai 也管不到了,因为 yabai 已经死掉了哈哈。
有两种方法可以启动 yabai。一种方法是直接输入 yabai,一回车等一会它会开始运行,可能会问一下你的管理员权限密码。我 Ctrl+C 先退出一下。另外一种方法是通过 yabai --start-service 启动。启动之后,你可以给它一些命令。你可以输入 yabai -m space --focus 2,比如说我现在在第一个桌面,我可以让它切换到第二个桌面。我现在运行这个命令,它就给我切换到第二个桌面了。
快捷键绑定:skhd 与 BetterTouchTool
看到这个相信大家也都明白了,你们要做的事情就是把快捷键绑定成执行这些命令。因为它提供的也就是这些命令,比如 yabai -m space --focus 3,它就会跳到第三个 space。无非就是把键盘快捷键分到这些命令上,键盘按一下快捷键的时候,这些命令会被执行。
怎么能做到把键盘快捷键绑定到执行这些命令呢?官方推荐的方法是用作者写的另外一个软件叫 skhd,这个软件可以把键盘快捷键绑定到命令上。我肯定要推荐官方的方法,但是我用的不是这个方法,我用的是 BetterTouchTool。这个软件能看到我这里面有一个 yabai 的文件夹,里面有好多快捷键。我不太推荐大家这么做,我这么做的唯一原因就是很久之前我买了这个软件,我就想直接用这个软件。它可以定一些快捷键,我已经有一些快捷键在里面了,用这个软件来同步配置很方便。我的配置,还有待会介绍的 yabai 配置,我全部都会贴出来放在视频简介里面。
配置文件 .yabairc 基础设置
键盘快捷键我就先不说了,推荐还是用官方的方法。你可以去编辑家目录下的 .yabairc 文件。大家能看到家目录下的 .yabairc 文件就是 yabai 的配置文件,它本质上就是一个 Shell 脚本。你在头两行复制一下,这两行很重要,就是我视频前面让你去获得 hash、加 sudo 干的事情。在安装文档最底下有这两行,你把它加到你的 .yabairc 最顶上。底下就是 yabai 的所有设置了。
窗口间距与 Padding 设置
设置看起来有很多,但其实都是一些小的偏好性设置。我再说几个比较重要的设置。第一个设置是 padding,就是整个屏幕上下左右留的空白空间。假设我把上下左右留的空白空间都改成 30,让 yabai 重新启动一下,就能看到所有窗口四周都会留大小是 30 的空间。比如我再开一个窗口,屏幕四周会留一个空间。这里面写了一个 10,这个 window_gap 指的就是窗口和窗口之间留的空间是 10。我把屏幕四周留的空白空间都改成 0 了,因为我个人不喜欢留这个空间,大家还是看各自的偏好。
窗口透明度与其他官方配置
调回来之后,上面有几个很有意思的东西。一个是普通窗口和正在使用窗口的透明度。我这块是把窗口半透明关掉的,因为我用了半天后发现没有太大必要,但是有需要的朋友可以把这个打开。顺便说一下,所有的这些配置在官方文档都是有说的。官方文档里面有一栏叫 Configuration File,对于每一种配置都有具体的说明,包括左右分屏的比例、鼠标的支持、还有其他样式。
桌面与窗口管理命令
我觉得有必要说的是几个命令。在文档 Commands 这一栏,有关于 space(桌面)的命令,还有对于窗口的命令。对于桌面的命令,你可以去切换桌面,切换前一个、后一个,或者切换最近的桌面、第几个桌面。你也可以创建桌面,把桌面来回移。对于每一个桌面,你也可以去更改当前桌面的布局,让窗口改成 bsp(二叉树分布),还是想要一个 stack(在 Z 轴上上下切换)。
你可以单独去调窗口是否变成浮动窗口。举个例子,现在我开一个新的窗口,我可以选择让这个窗口变成浮动窗口,之前我绑了一个快捷键,现在这个窗口就不受 yabai 的平铺式管理了,它就浮动在这里,变成了一个普通窗口。你也可以把它变回去,又被 yabai 管理了。你可以用命令来管理窗口是否是浮动的。我比较推荐大家去看一看,这里面有很多命令。
关于第三方状态栏 SketchyBar
最后说一下状态栏。我个人是不用第三方状态栏的,我在顶上有 Mac 系统的状态栏,有一个菜单,右边有一些图标。yabai 其实很早以前是有一个状态栏的,后来取消掉了,意思就是让大家自己做状态栏。我有很多群友推荐(对,我们有个群,大家可以去视频简介里面找一下链接),群友推荐了很多状态栏,有这么一个东西叫做 SketchyBar。大家有兴趣的话也可以配置一下。我配置了一下以后,发现好像我并不需要哈哈哈,所以最后也没用,发现用系统状态栏就可以了。但我只是想说一下这个东西是存在的。
结尾与下期预告
这期视频差不多就这样。下一期我想聊一下 Flutter。突然换了一个这么远的话题,但是我真的很想聊一聊 Flutter,因为我觉得这是一个很有意思的技术,我个人也花了很多时间在上面投入,很多东西我都想聊一聊。这一期我本来想聊 Flutter 的,但是答应了大家要做 yabai,所以就做了 yabai 的视频。如果对我下期视频想做什么有推荐,也欢迎进群讨论。感谢各位观看,我们下期再见,Peace。