Skip to main content
AeroSpace is a tiling window manager for macOS. Rig configures it with a 9x9 workspace grid — 9 workspace rows, each with 9 desktops.

Workspace Model

Workspaces are named W.D where W is the row (1-9) and D is the desktop (1-9), giving 81 total workspaces (e.g. 1.1, 3.5, 7.2).
  • Starts on workspace 1.1 after login.
  • Each workspace row remembers its last active desktop.
  • No gaps between windows (inner/outer = 0).

Keybindings

Window Navigation

ShortcutAction
Alt + h/j/k/lFocus left / down / up / right
Alt + Shift + h/j/k/lMove window left / down / up / right

Workspace Navigation

ShortcutAction
Cmd + Alt + 1-9Switch to workspace row 1-9 (remembers last desktop)
Cmd + Alt + j/kNext / previous workspace row
Cmd + Alt + h/lSwitch desktop within workspace (wraps)

Move Windows Between Workspaces

ShortcutAction
Cmd + Alt + Shift + 1-9Send window to workspace row (stay in place)
Cmd + Alt + Shift + j/kSend window to next/prev workspace row
Cmd + Alt + Shift + h/lSend window to next/prev desktop (wraps)

Layout & Resize

ShortcutAction
Alt + /Cycle tiles / horizontal / vertical
Alt + ,Cycle accordion horizontal / vertical
Alt + fToggle fullscreen
Alt + TabFocus back-and-forth
Alt + vJoin with right
Alt + bJoin with down
Alt + rEnter resize mode (h/j/k/l to resize, Esc/Enter to exit)

Workspace Management

ShortcutAction
Alt + nCreate a new unused workspace
Alt + pOpen workspace picker (SwiftUI app)
Alt + iOpen notification picker (SwiftUI app)

App Launchers

ShortcutAction
Alt + Shift + tLaunch Kitty terminal
Alt + Shift + sLaunch Safari
Alt + Shift + fLaunch Finder

Configuration Details

start-at-login = true
enable-normalization-flatten-containers = true
enable-normalization-opposite-orientation-for-nested-containers = true
on-focused-monitor-changed = ['move-mouse monitor-lazy-center']

[gaps]
inner.horizontal = 0
inner.vertical = 0
outer.left = 0
outer.right = 0
outer.top = 0
outer.bottom = 0

Swift Picker Apps

Rig includes two custom SwiftUI apps compiled during init.sh:

WorkspacePicker

A visual 9x9 grid overlay showing:
  • Currently occupied desktops
  • Windows and apps on each desktop
  • Notification badges
  • Preset workspace layouts (persisted as JSON)
Launch with Alt + p. Supports a --goto flag for direct workspace navigation.

NotificationPicker

Lists all applications with active notification badges. Click an entry to jump to the app’s workspace and window. Launch with Alt + i.

Compiling manually

cd ~/.config/aerospace/scripts
for src in *.swift; do
  name=$(basename "$src" .swift)
  bin=$(echo "$name" | sed 's/\([a-z]\)\([A-Z]\)/\1-\2/g' | tr '[:upper:]' '[:lower:]')-app
  swiftc -O -o "$bin" "$src" -framework SwiftUI -framework AppKit
done

Helper Scripts

All scripts live in ~/.config/aerospace/scripts/:
ScriptPurpose
switch-workspace.shSwitch workspace row, remember last desktop
move-to-workspace.shMove window to workspace row (stay in place)
switch-desktop.shNavigate desktops within workspace (circular)
move-to-desktop.shMove window between desktops (circular)
new-workspace.shFind first unused workspace row
workspace-picker.shLaunch WorkspacePicker app
notification-picker.shLaunch NotificationPicker app