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
即系统完整性保护,不过笔者本人没有关闭SIP
Yabai依旧能满足大部分的需求。
安装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
。