yabai
All Installations
- yabai https://github.com/koekeishiya/yabai - windows manager
- skhd https://github.com/koekeishiya/skhd - shortcuts for yabai Commands
- übersicht https://tracesof.net/uebersicht/ - macOS widgets software
- simplebar https://github.com/Jean-Tinland/simple-bar - widgets for übersicht
Unix Porn
やばいですね!
yabai desu ne!
yabai
preface
曾经自己也是一个层叠式窗口的使用者,在一个macOS的桌面开很多程序,每次切换的时候 <c-tab>
或是点击 dock 栏,要么用 Spootlight Search 切换。配合一些可以左右分屏 left half
first two thirds
center three fourths
的软件也还算便捷,但似乎总是不那么愉快。不断地调整窗口的大小,移动窗口的位置,不断地选择切换程序,一次一次一次又一次,终于感到了一丝厌烦。开始思考平铺窗口,为什么不呢?
在 Windows 下尚且可以利用 AutoHotKey
之类进行Hyper + 左键窗口任意位置拖动,Hyper + 右键拖动改变大小。但 Mac 带用鼠标的情况比较少,放弃了这种方式。
以上种种让我最终决定完全切换到 bsp
类的窗口管理器,从繁杂的小事情中解脱出来吧啊啊啊啊。
自己学习使用 yabai
并不是一蹴而就。自己早先尝试过一次,但又切换回了 macOS 默认的浮动窗口。原因莫过于要自己写很多配置,或者发现命令无效,需要关闭 SIP
才可以。最终阅读 yabai 文档的麻烦 < 层叠窗口的折磨,于是开始了彻底地切换到 WM(Windows Manager)。
看到网上很多的和 yabai
有关的小教程都是安装和最简单的使用,自己决定还是把自己额外从 yabai wiki 中看到的一些记录一下。如何你看到了这篇文章,那么我强烈建议通过阅读上面列出的 yabai wiki
来学习使用。以下仅为个人的自娱自乐
首先列出的所有的软件都是什么?
yabai 是适用于 macOS 的窗口管理器本体,快速上手只需要简单学习一下: yabai 的安装、配置、命令即可; skhd 是一个快捷键工具,用于把快捷键绑定到 yabai 的命令,比如 alt - 1 : yabai -m space --focus 1
将 alt + 1
快捷键设置为切换到第一个虚拟桌面; 至此已经足够。如果更多的想要设置一个 status-bar(用来查看所有的spaces也就是虚拟桌面),可以继续选择第三方状态栏。我的选择是 übersicht 中的 simplebar widget(widget就是小组件的意思啦) 实现效果如下,左侧可以看到当前的处于哪一个桌面,这对于经常开7~9个桌面的我来说很有帮助。
quickstart
yabai install
https://github.com/koekeishiya/yabai/wiki/Installing-yabai-(latest-release)
skhd install
https://githubcom/koekeishiya/skhd
tutorials
TheNiceBoy video
SSpai post
little things
window resize detail
"cannot locate a bsp node fence" error
+---------+
| A | C |
|----|----|
| B | D |
+---------+
E.g:
# operations that work on window A
# move right border towards C (increase size of A)
yabai -m window --resize right:20:0
# move right border away from C (decrease size of A)
yabai -m window --resize right:-20:0
# move left border of A (there is no border, bsp fence message will be reported)
yabai -m window --resize left:20:0
# move left border of A (there is no border, bsp fence message will be reported)
yabai -m window --resize left:-20:0
# the same set of restrictions apply to window C (although mirrored).
# the same set of restrictions apply to the y-axis, although rotated
regex rule filter
https://github.com/koekeishiya/yabai/issues/885
https://github.com/koekeishiya/yabai/issues/1687
# IntelliJ
JB_Apps='^(CLion|PyCharm|IntelliJ IDEA)$'
yabai -m rule --add app="${JB_Apps}" manage=off
# If `Open last project when launch` is checked, add this rule. And make sure `always show project path` is also checked.
# yabai -m rule --add app="${JB_Apps}" title=".*\[.*\].*" manage=on
yabai -m rule --add app="${JB_Apps}" title="^$" manage=on
#wechat
yabai -m rule --add app="^WeChat$" manage=off
yabai -m rule --add app="^WeChat$" title='WeChat \((.*)\)' manage=on
# qq image
yabai -m rule --add app='QQ' title='图片查看器' manage=off
# others
yabai -m rule --add app="System Settings" manage=off
yabai -m rule --add app="^Bartender" manage=off
yabai -m rule --add app="Chrome" title="^DevTools" manage=off
很多时候软件有一些弹出窗口,而我们并不希望这些窗口也被平铺。比如QQ、微信查看一张图片,IDEA 一些设置窗口。那么我们可以 yabai -m rule -add app="...." title="...." manage=off/on
app和title里面使用正则匹配,那如何知道我们使用的apps titles 呢,可以使用 yabai query commands e.g. yabai -m query --windows
opacity
yabai -m config
window_opacity_duration 0.0 \
active_window_opacity 0.90 \
normal_window_opacity 0.95 \
window_opacity on
我发现透明度好好看,设置几个好看的壁纸相当于给所有窗口加背景了!而且可以区分 focus windows