macOS

The same setup as far as macOS allows: same fonts (24 pt, 3x the pixel grid on Retina), themes, Emacs and keys, with cmd as dwm's Super and a Mac tool in place of each Linux one. Config lives in desktop/mac; the full guide is chapter 13 of the manual.

Linux → Mac

dwm → AeroSpaceSame keys, workspaces 1–10 summoned like tags; skhd adds cmd-left/right, which AeroSpace cannot see.
dwm borders → JankyBordersColours from theme.
dwmblocks → SketchyBarTags with app icons, weather, network, input method, memory, battery and date, in the theme's bar colours.
dmenu → dmenu in SwiftSame flags and keys, drawn over the bar. Typing firefox opens a new window.
st → kittyst's keys: alt-l open a link, alt-y copy one, alt-o copy the last command's output. One kitty process, so a window opens in 0.2 s.
dwm swallow → swallowAn app started from a terminal hides that terminal until it exits, through an AeroSpace rule and a zsh hook.
zathura → zathuraFrom Homebrew, with Zathura.app so Finder opens PDF, EPUB and MOBI in it.
keyd → KarabinerRules generated from the same keyd.conf.
fcitx5 → SquirrelThe same Rime schemes.
getpass → getpasspass + dmenu, with pinentry-mac.
dunst, slock, flameshotNotification Center, ctrl-cmd-q, cmd-shift-5.
redshift → f.lux
playerctl, pulsemixernowplaying-cli, switchaudio-osx.
— → CodeIslandClaude Code / Codex status around the notch.

Keys cmd = dwm's Super

cmd-enterkitty
cmd-ddmenu
cmd-e / cmd-shift-eEmacs / emacs-everywhere
cmd-shift-wFirefox
cmd-shift-demoji
cmd-j/kfocus next / previous; with Shift, swap
cmd-h/lresize
cmd-1..0workspace, summoned onto the focused monitor; with Shift, send the window
cmd-comma/periodfocus the other monitor; with Shift, move the window there
cmd-shift-spacelayout
cmd-shift-bhide the bar
cmd-qclose window
alt-tabtoggle the last two workspaces

Core macOS shortcuts (cmd-c/v/x/z/s/t/w/f, Spotlight, cmd-tab) are unchanged. Full list: desktop/mac/aerospace/README.md.

Setup notes

steps./bootstrap.sh runs packages tools builds fonts links shell emacs defaults services theme. See install.
apps installed by handHOMEBREW_CASK_OPTS=--adopt brew bundle --file packages/Brewfile
password casksSquirrel, Karabiner, Docker, Tailscale and Bitwarden must be installed from a terminal.
no Xcodedmenu, Zathura.app and CodeIsland need only the command-line tools.
by hand onceEnable the "keymap" rules in Karabiner; allow SketchyBar, AeroSpace and skhd under Accessibility.
~/.zshrcNot in git; step shell adds the swallow hook to it.

Apps

From SOFTWARE.md. manual means installed by hand: a fresh machine will not get it from bootstrap.sh. Config paths are inside personal-infra.

themed coloured by themeboth also on Linux

Scripts