Omarchy-Inspired Setup for macOS
January 25, 2026
4 min read·— views
After watching the Omarchy intro video, I wanted that clean, keyboard-driven environment. The problem? I'm stuck on macOS. I use it for work, for the ecosystem and other practical reasons. So I wanted to replicate the experience as closely as possible on macOS.
Why AeroSpace over yabai
I tried yabai first, but on macOS Tahoe (26), accessibility permissions don't work reliably. AeroSpace doesn't have this problem. It works within macOS's security model without requiring SIP to be disabled.
Installation
Install via Homebrew:
# Install AeroSpace
brew install --cask nikitabobko/tap/aerospace
# Install SketchyBar
brew tap FelixKratz/formulae
brew install sketchybar
# Install font
brew install --cask font-hack-nerd-font
Open AeroSpace from Finder once to grant accessibility permissions. Unlike yabai, this actually works.
Configuration
Create ~/.config/aerospace/aerospace.toml:
start-at-login = true
# SketchyBar integration
exec-on-workspace-change = ['/bin/bash', '-c',
'sketchybar --trigger aerospace_workspace_change FOCUSED_WORKSPACE=$AEROSPACE_FOCUSED_WORKSPACE']
[gaps]
inner.horizontal = 10
inner.vertical = 10
outer.left = 10
outer.right = 10
outer.bottom = 10
outer.top = 10
[mode.main.binding]
# Navigation (vim keys)
alt-h = 'focus left'
alt-j = 'focus down'
alt-k = 'focus up'
alt-l = 'focus right'
# Move windows
alt-shift-h = 'move left'
alt-shift-j = 'move down'
alt-shift-k = 'move up'
alt-shift-l = 'move right'
# Workspaces
alt-1 = 'workspace 1'
alt-2 = 'workspace 2'
alt-3 = 'workspace 3'
alt-4 = 'workspace 4'
alt-5 = 'workspace 5'
alt-shift-1 = 'move-node-to-workspace 1'
alt-shift-2 = 'move-node-to-workspace 2'
alt-shift-3 = 'move-node-to-workspace 3'
alt-shift-4 = 'move-node-to-workspace 4'
alt-shift-5 = 'move-node-to-workspace 5'
# Monitors
alt-comma = 'focus-monitor left'
alt-period = 'focus-monitor right'
alt-shift-comma = 'move-node-to-monitor left'
alt-shift-period = 'move-node-to-monitor right'
# Actions
alt-f = 'fullscreen'
alt-t = 'layout floating tiling'
alt-b = 'balance-sizes'
alt-r = 'layout tiles horizontal vertical'
# Resize
ctrl-alt-h = 'resize width -50'
ctrl-alt-j = 'resize height +50'
ctrl-alt-k = 'resize height -50'
ctrl-alt-l = 'resize width +50'
# Launch iTerm
alt-enter = 'exec-and-forget open -a iTerm'
# Workspace assignments
[[on-window-detected]]
if.app-id = 'com.googlecode.iterm2'
run = 'move-node-to-workspace 1'
[[on-window-detected]]
if.app-id = 'com.brave.Browser'
run = 'move-node-to-workspace 2'
[[on-window-detected]]
if.app-id = 'com.microsoft.VSCode'
run = 'move-node-to-workspace 3'
[[on-window-detected]]
if.app-id = 'com.anthropic.claudefordesktop'
run = 'move-node-to-workspace 4'
[[on-window-detected]]
if.app-id = 'com.apple.Notes'
run = 'move-node-to-workspace 5'
[[on-window-detected]]
if.app-id = 'com.apple.MobileSMS'
run = 'move-node-to-workspace 5'
[[on-window-detected]]
if.app-id = 'com.apple.finder'
run = 'move-node-to-workspace 5'
[[on-window-detected]]
if.app-id = 'com.apple.systempreferences'
run = ['move-node-to-workspace 5', 'layout floating']
[[on-window-detected]]
if.app-id = 'com.spotify.client'
run = 'move-node-to-workspace 5'
[[on-window-detected]]
if.app-id = 'com.apple.calculator'
run = 'layout floating'
[[on-window-detected]]
if.app-id = 'com.1password.1password'
run = 'layout floating'
To find app IDs: aerospace list-apps
SketchyBar Setup
SketchyBar replaces the native macOS menu bar:
mkdir -p ~/.config/sketchybar/plugins
cp /opt/homebrew/opt/sketchybar/share/sketchybar/examples/sketchybarrc ~/.config/sketchybar/
chmod +x ~/.config/sketchybar/sketchybarrc
Edit ~/.config/sketchybar/sketchybarrc:
SPACE_ICONS=("1" "2" "3" "4" "5")
for i in "${!SPACE_ICONS[@]}"
do
sid="$(($i+1))"
space=(
icon="${SPACE_ICONS[i]}"
icon.padding_left=7
icon.padding_right=7
background.color=0x40ffffff
background.corner_radius=5
background.height=25
label.drawing=off
click_script="aerospace workspace $sid"
)
sketchybar --add item space."$sid" left \
--set space."$sid" "${space[@]}"
done
# Workspace change listener
sketchybar --add event aerospace_workspace_change \
--add item aerospace_listener left \
--set aerospace_listener drawing=off \
script="$PLUGIN_DIR/aerospace.sh" \
--subscribe aerospace_listener aerospace_workspace_change
Create ~/.config/sketchybar/plugins/aerospace.sh:
#!/bin/bash
if [ "$SENDER" = "aerospace_workspace_change" ]; then
FOCUSED_WORKSPACE="$FOCUSED_WORKSPACE"
else
FOCUSED_WORKSPACE=$(aerospace list-workspaces --focused)
fi
for i in {1..5}; do
if [ "$FOCUSED_WORKSPACE" = "$i" ]; then
sketchybar --set space.$i background.color=0xffffffff icon.color=0xff000000
else
sketchybar --set space.$i background.color=0x40ffffff icon.color=0xffffffff
fi
done
Make it executable: chmod +x ~/.config/sketchybar/plugins/aerospace.sh
Reload: sketchybar --reload
Hide the native menu bar in System Settings → Control Center → "Automatically hide and show the menu bar."
Why alt instead of cmd
Using cmd as the modifier conflicts with macOS shortcuts:
cmd+hhides appscmd+fis browser searchcmd+shift+3/4/5are screenshots
alt (Option) has no conflicts and works better.
iTerm Integration
Configure iTerm2 to prefer tabs:
defaults write com.googlecode.iterm2 OpenTmuxWindowsIn -int 2
defaults write com.googlecode.iterm2 OpenFileInNewWindows -bool false
Now alt+enter launches iTerm or creates a new tab if already running.
Multi-Monitor Setup
With 2 monitors, you get 10 independent workspaces (5 per monitor):
alt+.focuses the right monitoralt+,focuses the left monitoralt+1-5switches workspaces on the focused monitor
Each monitor shows its active workspace in SketchyBar.
Key Differences from yabai
i3-style vs BSP: AeroSpace uses i3-style tiling where windows in a container split equally. Unlike yabai's BSP, new windows don't automatically split existing ones. You move them manually with alt+shift+hjkl.
No SIP required: AeroSpace works through accessibility APIs without disabling System Integrity Protection.
macOS Tahoe support: Explicitly tested on macOS 26 where yabai's accessibility permissions fail.
Workspace Layout
- iTerm - terminal work
- Browser - documentation
- VSCode - coding
- Claude - AI assistance
- Notes, Messages, Finder, Spotify - everything else
Apps automatically route to their workspace on launch.
Inspired by Christopher Penkin's yabai setup. Full config: github.com/vnglst/dotfiles