macOS平铺式窗口管理器
什么是平铺窗口管理
平铺式窗口管理是相对于堆叠式窗口管理的另外一种窗口管理方式(下图左边是平铺,右边是传统堆叠式),相比于堆叠式,平铺更倾向于将所有的窗口互不遮挡显示最大程度铺满显示器,并且通过快捷键可以非常高效的管理窗口。比如窗口会在打开时自动排列,通过快捷键让窗口快速在不同的工作空间切换,快速切换窗口的位置,如果有多个显示器可以让窗口在多个显示器中流转,以上所有的功能都可以自定义,并且可以通过快捷键完成。
macOS上的平铺式窗口管理–Yabai
Why Yabai
macOS上苹果的封闭生态,以及macOS自带的窗口管理功能相当薄弱,我们还是得用第三方的窗口管理。笔者本人曾经尝试过Magnet或者Hammerspoon等窗口管理器,但是都无法很好的满足笔者本人的需求,Magnet需要手动排列窗口不够方便,Hammerspoon对窗口识别有点问题,最后笔者发现了Yabai这个开源软件,感觉发现了宝藏一样,能在Mac上实现几乎大部分平铺窗口的功能,并且通过shell配置,有丰富的自定义空间。
How to use Yabai
macOS上窗口管理是通过Dock.app实现的,所以Yabai就是通过注入实现对Dock.app的控制从而控制窗口,所以有一些进阶功能需要关闭SIP即系统完整性保护,不过笔者本人没有关闭SIPYabai依旧能满足大部分的需求。
安装Yabai如果用Homebrew那么还是非常简单的在终端输入brew install yabai即可。
接下来我们需要自定义Yabai,我们需要在~/.config/yabai/这个路径下创建一个yabairc文件,作为Yabai的配置文件。这个笔者可以提供自己的配置文件供大家参考https://github.com/xbunax/dotfile/blob/main/yabai/yabairc,我这里简单介绍一下配置文件的功能,不过建议大家看Yabai的官方wiki : https://github.com/koekeishiya/yabai/wiki。
|
|
当然我们需要将有些窗口脱离Yabai的管理,所以我们需要手动设置脱离窗口管理的白名单
|
|
如果需要设置小窗的浮动窗口,我们可以设置
|
|
当然我们也可以通过Yabai查询窗口信息在终端输入yabai -m query --windows --space <num>可以获取对应space的窗口信息。比如
|
|
我们也可以通过Yabai的CLI来控制窗口
|
|
更多的控制命名可以去查看Yabai的wiki。
当然我们不可能每次都是输入终端命令来使用Yabai,所以我们需要将Yabai的终端命令与对应的快捷键绑定,Yabai的作者提供了skhd这个工具,但是笔者本人用的是Bettertouchtool这个软件,设置起来更加的方便,同样笔者本人也提供对应的配置文件供参考https://github.com/xbunax/dotfile/blob/main/bettertouchtool/exported_triggers.bttpreset

配置完成
经以上配置,在终端输入yabai --start-service就可以将Yabai设置成开机自启动了。
一下是本人的配置演示视频,欢迎三连。
总结
平铺窗口主要是在Linux上使用比较多,适合需要高效的在多窗口之间切换的人群。当然macOS上还有很多其他的窗口管理器,如果实在闲Yabai麻烦,可以使用amethyst这个平铺窗口管理器基本上开箱即用,可以到这里下载https://github.com/ianyh/Amethyst。