Configure MacOS for software development with yabai, skhd, karabiner and tmux
Friend link for non-members
I should be using Linux at this point but because I have a Macbook, I have to make do with what I have for customization. I use a 60% per cent keyboard with my external display and want to do almost everything in terms of moving around windows and resizing with my keyboard rather than the mouse.
Three tools that have helped me set up my MacOS keyboard shortcuts and software dev environment are yabai, skhd, karabiner and tmux.
Yabai
Yabai is a window/tiling manager for MacOS. It allows you to auto-split screens for windows, move focus, swap windows and more. However, to do more advanced customizations, System Integrity Protection needs to be partially disabled. I have decided not to do this because it can potentially expose your system to vulnerabilities so if you disable it, please understand the repercussions fully.
To get started with Yabai, visit the repo and follow the installation directions for your system. After installation, create a config file in ./config/yabai/yabairc. This will load your custom configurations for yabai. I have mostly used the default config but feel free to customize as you like. One thing I have found useful is disabling certain apps from being managed by Yabai:
yabai -m rule --add app="Spark Desktop" manage=off
yabai -m rule --add app="GK6+" manage=off