Prometheus

Desktop & WM — SketchyBar, AeroSpace, OmniWM, dual profiles

SketchyBar status bar, AeroSpace and OmniWM tiling window managers, and the dual-config setup that swaps gaps and workspace assignments between laptop and docked use.

This page covers the four layers that make up the desktop: SketchyBar (status bar), your choice of OmniWM or AeroSpace (window manager), and multi-config profiles for switching between the laptop screen and external monitors.

SketchyBar

Floating, notch-aware menu bar replacement. Two frosted-glass pills sit on either side of the MacBook notch.

The bar is organised into four widget groups:

  • SPACES — AeroSpace workspaces
  • MEDIA — Now playing
  • SYSTEM — Battery · Volume · Wi-Fi
  • AI — Claude + Gemini usage
Setup
brew tap FelixKratz/formulae
brew install sketchybar
brew services start sketchybar

# App font (workspace icons)

curl -fsSL https://github.com/kvndrsslr/sketchybar-app-font/releases/download/v2.0.28/sketchybar-app-font.ttf \
-o ~/Library/Fonts/sketchybar-app-font.ttf

# Symlink + reload

ln -sf ~/dotfiles/sketchybar ~/.config/sketchybar
sketchybar --reload

Day-to-day controls:

sketchybar --reload                     # Reload config
brew services restart sketchybar        # Restart service
brew services list | grep sketchybar    # Check status

Color Scheme

VariableColorUse
BAR_COLOR#1a1b26Bar / pill background
ACCENT_COLOR#7aa2f7Active space · Wi-Fi
PURPLE#bb9af7Calendar icon
CYAN#7dcfffVolume icon
GREEN#9ece6aBattery full · AI low
YELLOW#e0af68Battery mid · AI mid
RED#f7768eBattery low · AI high

OmniWM

Hyprland-style dwindle/BSP tiling window manager for macOS by BarutSRB. GUI-configured (no TOML) with a built-in Quake terminal. Peer alternative to AeroSpace — pick one at install time.

Setup
brew tap BarutSRB/tap
brew install --cask omniwm
~/dotfiles/omniwm/configure.sh   # pre-seed sensible defaults

Default hotkeys

KeyAction
Option + 1–9Switch to workspace
Option + Shift + 1–9Move window to workspace
Option + ←/↓/↑/→Focus window
Option + Shift + ←/↓/↑/→Move window
Option + Shift + BBalance sizes
Option + ReturnToggle fullscreen

Config flow — omniwm/configure.sh

OmniWM stores settings under the com.barut.OmniWM defaults domain, so the config is binary plist rather than text. configure.sh wraps defaults write / export / import so the settings stay version-controlled.

CommandWhat it does
./configure.shApply repo defaults (borders on, workspace bar off, focus-follows-mouse off)
./configure.sh --exportSave your current OmniWM settings into omniwm/backup.plist — commit this
./configure.sh --importRestore settings from backup.plist on a new machine

AeroSpace

i3-inspired tiling window manager for macOS. Vim-style keybindings, workspace-based layout. Supports dual-monitor profiles via aerospace-sync.

Setup
brew tap nikitabobko/tap
brew install --cask nikitabobko/tap/aerospace
mkdir -p ~/.config/aerospace
ln -sf ~/dotfiles/aerospace/aerospace.toml ~/.config/aerospace/aerospace.toml
KeyAction
Alt + H/J/K/LFocus window left / down / up / right
Alt + Shift + H/J/K/LMove window
Alt + THorizontal tiles (side-by-side)
Alt + FToggle floating / tiling
Alt + Shift + -Resize smart –50
Alt + Shift + =Resize smart +50

Workspaces

KeyAction
Alt + 1–9Switch to workspace
Alt + Shift + 1–9Move window to workspace
Alt + TabPrevious workspace (back and forth)
Alt + Shift + TabMove workspace to next monitor
Alt + DSync profile (laptop / docked auto-detect)

Service Mode

KeyAction
Alt + Shift + ;Enter service mode
EscReload config + exit service mode
RFlatten workspace tree (reset layout)
FToggle floating / tiling
BackspaceClose all windows but current

Multi-Config Profiles

AeroSpace has no per-monitor gap support, so two separate config files handle the different setups. The aerospace-sync script auto-detects your monitor count and applies the right profile.

Laptop profile — aerospace/laptop.toml

  • outer.top = 8
  • Workspace assignment: none
  • Monitors: 1 (built-in)

macOS manages the notch offset automatically. Minimal top gap keeps content flush to the bar.

Docked profile — aerospace/docked.toml

  • outer.top = 35
  • Workspaces 1–5 → main monitor
  • Workspaces 6–9 → secondary monitor

Top gap of 35px clears SketchyBar (height 36 + margin 10, bottom at y=46) on external monitors.

Three ways to switch

  1. Terminal — run dock or undock from Zsh or Fish. Both aliases call the same script.
  2. KeybindingAlt + D from anywhere — no terminal needed. Bound directly in AeroSpace.
  3. Auto-detectaerospace-sync counts connected monitors and picks the right profile every time.

How aerospace-sync works

# Counts monitors via aerospace list-monitors
# 1 monitor   →  copies laptop.toml  →  outer.top = 8
# 2+ monitors →  copies docked.toml  →  outer.top = 35, workspace assignments

ln -sf ~/dotfiles/bin/aerospace-sync ~/.local/bin/aerospace-sync
chmod +x ~/.local/bin/aerospace-sync

The script resolves the symlink target with readlink before writing so the symlink is never broken.

Shell aliases

Both shells expose the same two aliases:

alias dock='aerospace-sync'
alias undock='aerospace-sync'

Where to go next

On this page
Edit this page on GitHub Last updated

Built by rafay99-epic · MIT License

Tokyo Night · macOS · SketchyBar · AeroSpace · Ghostty · Zsh · Fish