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 hand
HOMEBREW_CASK_OPTS=--adopt brew bundle --file packages/Brewfilepassword 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