Dependencies

MacOS still lacks a native package manager. It has a number of inconsistencies from a typical free software distribution. Therefore:

  1. Install Homebrew
  2. brew install iterm2 fish git bash bash-completion fzf coreutils

You may want to chsh -s to the later bash from Homebrew for newer Bash features and avoiding the ZSH default.

(optional) Coding tools:

  1. brew install planck neovim deno ripgrep

(optional) Apps:

  1. brew install firefox google-chrome visual-studio-code

† MacOS has some of these preinstalled, but often on outdated patchsets (for example, Big Sur still ships with Bash 3 due to a license related legal concern. Bash 5 has been released). It is likely that this, combined with the overwhelming adoption of OhMyZSH and similar frameworks have led Apple to choose ZSH as the default shell.

By adopting ZSH, they circumvent their legal problem as ZSH has similar modern features comparable to up-to-date Bash releases. As a programmer though, you should wonder why not try something new like elvish or other shells under development? It seems clear from using Fish that there is room for improvement in the shell. Just beware that On MacOS, changing to so-called "exotic" shells requires janky workarounds.

Install window manager (Yabai)

Yabai is the best (and one of the only) tiling WM for MacOS. The config and layout behavior is closely designed after bspwm and sxhkd. Note that Yabai pairs with skhd. The separate hotkey daemon has a design where keybindings are not strictly bound to one particular window manager.

Yabai requires removing Apple security gates in order for all features to work properly, and a complicated setup. That is, it's very similar to the ChunkWM setup (see notes below).

Once the painful setup is done, it's well worth it. You end up with a Tiling window management experience, but without greatly disturbing the native MacOS user interface.

History of Yabai

ChunkWM is dead, long live Yabai

Tiling window managers appeared for MacOS around 2017. At the time, ChunkWM was the de facto WM experience for MacOS. koekishiya is the author of chunkwm, and he has a habit (so far) of renaming the WM every few major MacOS releases. Migrating from ChunkWM to Yabai for example, is not too bad because many configuration strings are invariant between the two.