mirror of
https://github.com/harivansh-afk/dots.git
synced 2026-04-15 06:04:41 +00:00
181 lines
5.1 KiB
TOML
181 lines
5.1 KiB
TOML
# AeroSpace config - https://nikitabobko.github.io/AeroSpace/guide
|
|
#
|
|
# Keybinding philosophy:
|
|
# alt+* = AeroSpace (focus, workspaces, layout)
|
|
# alt+shift+* = AeroSpace (move, modes)
|
|
# ctrl+h/j/k/l = Karabiner vim nav (arrows, scroll) - DO NOT USE
|
|
# ctrl+1-6 = Karabiner app launchers - DO NOT USE
|
|
# alt+w = tmux prefix (via Karabiner Right Cmd) - DO NOT USE
|
|
# C-h/j/k/l = nvim window nav (inside terminal) - no conflict
|
|
# zsh ctrl+j/k = autosuggestion nav (inside terminal) - no conflict
|
|
|
|
config-version = 2
|
|
|
|
start-at-login = true
|
|
|
|
# Normalizations
|
|
enable-normalization-flatten-containers = true
|
|
enable-normalization-opposite-orientation-for-nested-containers = true
|
|
|
|
# Layout defaults
|
|
default-root-container-layout = 'tiles'
|
|
default-root-container-orientation = 'auto'
|
|
accordion-padding = 30
|
|
|
|
# Mouse follows focus when switching monitors
|
|
on-focused-monitor-changed = ['move-mouse monitor-lazy-center']
|
|
|
|
# Gaps between windows
|
|
[gaps]
|
|
inner.horizontal = 10
|
|
inner.vertical = 10
|
|
outer.left = 10
|
|
outer.right = 10
|
|
outer.top = 10
|
|
outer.bottom = 10
|
|
|
|
# -------------------------------------------------------------------
|
|
# Main keybindings
|
|
# -------------------------------------------------------------------
|
|
[mode.main.binding]
|
|
|
|
# Focus windows: alt + h/j/k/l
|
|
alt-h = 'focus left'
|
|
alt-j = 'focus down'
|
|
alt-k = 'focus up'
|
|
alt-l = 'focus right'
|
|
|
|
# Move windows: alt+shift + h/j/k/l
|
|
alt-shift-h = 'move left'
|
|
alt-shift-j = 'move down'
|
|
alt-shift-k = 'move up'
|
|
alt-shift-l = 'move right'
|
|
|
|
# Switch workspaces: alt + number
|
|
alt-1 = 'workspace 1'
|
|
alt-2 = 'workspace 2'
|
|
alt-3 = 'workspace 3'
|
|
alt-4 = 'workspace 4'
|
|
alt-5 = 'workspace 5'
|
|
alt-6 = 'workspace 6'
|
|
alt-7 = 'workspace 7'
|
|
alt-8 = 'workspace 8'
|
|
alt-9 = 'workspace 9'
|
|
|
|
# Move window to workspace: alt+shift + number
|
|
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'
|
|
alt-shift-6 = 'move-node-to-workspace 6'
|
|
alt-shift-7 = 'move-node-to-workspace 7'
|
|
alt-shift-8 = 'move-node-to-workspace 8'
|
|
alt-shift-9 = 'move-node-to-workspace 9'
|
|
|
|
# Layout toggles
|
|
alt-slash = 'layout tiles horizontal vertical'
|
|
alt-comma = 'layout accordion horizontal vertical'
|
|
|
|
# Fullscreen (replaces Rectangle: Option+F maximize)
|
|
alt-f = 'fullscreen'
|
|
|
|
# Float toggle (replaces Rectangle: Option+Shift+F almost-maximize)
|
|
alt-shift-f = 'layout floating tiling'
|
|
|
|
# Balance window sizes
|
|
alt-shift-b = 'balance-sizes'
|
|
|
|
# Last workspace (using backtick instead of tab to preserve macOS app switcher)
|
|
alt-backtick = 'workspace-back-and-forth'
|
|
|
|
# Monitor focus/move (replaces Rectangle: Ctrl+Option+Cmd+Space next display)
|
|
alt-period = 'focus-monitor next'
|
|
alt-shift-period = 'move-node-to-monitor next'
|
|
alt-shift-comma = 'move-workspace-to-monitor next'
|
|
|
|
# Modes
|
|
alt-shift-r = 'mode resize'
|
|
alt-shift-semicolon = 'mode service'
|
|
|
|
# Screenshot to clipboard
|
|
alt-shift-s = 'exec-and-forget screencapture -i -c'
|
|
|
|
# -------------------------------------------------------------------
|
|
# Resize mode: alt+shift+r to enter, esc to exit
|
|
# -------------------------------------------------------------------
|
|
[mode.resize.binding]
|
|
h = 'resize width -50'
|
|
j = 'resize height +50'
|
|
k = 'resize height -50'
|
|
l = 'resize width +50'
|
|
minus = 'resize smart -50'
|
|
equal = 'resize smart +50'
|
|
enter = 'mode main'
|
|
esc = 'mode main'
|
|
|
|
# -------------------------------------------------------------------
|
|
# Service mode: alt+shift+; to enter, esc to exit
|
|
# -------------------------------------------------------------------
|
|
[mode.service.binding]
|
|
r = ['reload-config', 'mode main']
|
|
f = ['flatten-workspace-tree', 'mode main']
|
|
b = ['balance-sizes', 'mode main']
|
|
esc = 'mode main'
|
|
backspace = ['close-all-windows-but-current', 'mode main']
|
|
|
|
# -------------------------------------------------------------------
|
|
# Auto-assign apps to workspaces
|
|
# -------------------------------------------------------------------
|
|
# Browsers -> workspace 1
|
|
[[on-window-detected]]
|
|
if.app-id = 'com.apple.Safari'
|
|
run = 'move-node-to-workspace 1'
|
|
|
|
[[on-window-detected]]
|
|
if.app-id = 'company.thebrowser.Browser'
|
|
run = 'move-node-to-workspace 1'
|
|
|
|
# Terminals -> workspace 2
|
|
[[on-window-detected]]
|
|
if.app-id = 'com.apple.Terminal'
|
|
run = 'move-node-to-workspace 2'
|
|
|
|
[[on-window-detected]]
|
|
if.app-id = 'com.mitchellh.ghostty'
|
|
run = 'move-node-to-workspace 2'
|
|
|
|
[[on-window-detected]]
|
|
if.app-id = 'com.googlecode.iterm2'
|
|
run = 'move-node-to-workspace 2'
|
|
|
|
# Editors -> workspace 3
|
|
[[on-window-detected]]
|
|
if.app-id = 'com.microsoft.VSCode'
|
|
run = 'move-node-to-workspace 3'
|
|
|
|
[[on-window-detected]]
|
|
if.app-id = 'dev.zed.Zed'
|
|
run = 'move-node-to-workspace 3'
|
|
|
|
# Chat -> workspace 4
|
|
[[on-window-detected]]
|
|
if.app-id = 'com.tinyspeck.slackmacgap'
|
|
run = 'move-node-to-workspace 4'
|
|
|
|
[[on-window-detected]]
|
|
if.app-id = 'ru.keepcoder.Telegram'
|
|
run = 'move-node-to-workspace 4'
|
|
|
|
[[on-window-detected]]
|
|
if.app-id = 'org.whispersystems.signal-desktop'
|
|
run = 'move-node-to-workspace 4'
|
|
|
|
[[on-window-detected]]
|
|
if.app-id = 'com.apple.MobileSMS'
|
|
run = 'move-node-to-workspace 4'
|
|
|
|
# Media -> workspace 5
|
|
[[on-window-detected]]
|
|
if.app-id = 'com.spotify.client'
|
|
run = 'move-node-to-workspace 5'
|