Yabai
I’ve recently been using – with much happiness – yabai. Yabai is a tiling window manager for macOS, similar to i3 for Linux. Yabai itself doesn’t handle any of the keyboard shortcuts or make any assumptions about how you use it. Instead, you run it as a service (I’m running it via brew services start yabai) and it exposes an API that you can use other tools to control. The most popular and recommended way of controlling yabai is via skhd by the same author: github.com/koekeishiya. skhd is a dead-simple tool that lets you remap your keys however you want. I’m running it via brew services start skhd.
Notes on Yabai
SIP
I don’t have SIP (System Integrity Protection) disabled. Disabling SIP let’s yabai do more stuff like control macOS spaces. I don’t use spaces and I didn’t feel the need to have any of the other features that require disabling SIP.
Limelight
If you disable SIP, you have the option to enable a border around the window that has focus in yabai. It makes it easier to see which app you’re focused on when you’re flipping through with your keyboard shortcuts. If you don’t have SIP disabled, there’s a nifty little tool (again by koekeishiya) called limelight that’ll do the same thing. I guess limelight is actually old code that used to be in yabai? Weird that old code wouldn’t require disabling security protections and new code would, but whatever. The border color and thickness and all that are configurable. I don’t really want a border around my windows so I don’t use this.
Useful links
- yabai wiki
- example .yabairc
- example skhdrc
- koekeishiya's .yabairc
- koekeishiya's skhdrc
- my .yabairc
- my skhdrc
Notes on my configs
yabai
I have some app-specific configurations at the top of my .yabairc. For example:
yabai -m rule --add app="^Slack$" display=2 manage=off
skhd
Toggling whether a window is floated or not is highly recommended. Some times you just want to move a window around without it being snapped into position by yabai. For instance, if a dialog window or something pops up I don’t want that taking up 25% of my screen. I’ll press shift + alt - f to make it float.