## Navigation (lalt - ...)
# Space Navigation (four spaces per display): lalt - {1, 2, 3, 4}
lalt - 1 : SPACES=($(yabai -m query --displays --display | jq '.spaces[]')) && [[ -n $SPACES[1] ]] && yabai -m space --focus $SPACES[1]
lalt - 2 : SPACES=($(yabai -m query --displays --display | jq '.spaces[]')) && [[ -n $SPACES[2] ]] && yabai -m space --focus $SPACES[2]
lalt - 3 : SPACES=($(yabai -m query --displays --display | jq '.spaces[]')) && [[ -n $SPACES[3] ]] && yabai -m space --focus $SPACES[3]
lalt - 4 : SPACES=($(yabai -m query --displays --display | jq '.spaces[]')) && [[ -n $SPACES[4] ]] && yabai -m space --focus $SPACES[4]

# Window Navigation (through display borders): lalt - {j, k, l, ö}
lalt - j    : yabai -m window --focus west  || yabai -m display --focus west
lalt - k    : yabai -m window --focus south || yabai -m display --focus south
lalt - u    : yabai -m window --focus north || yabai -m display --focus north
lalt - 0x29 : yabai -m window --focus east  || yabai -m display --focus east

# Extended Window Navigation: lalt - {h, ä}
lalt -    h : yabai -m window --focus first
lalt - 0x27 : yabai -m window --focus  last

# Float / Unfloat window: lalt - space
lalt - space : yabai -m window --toggle float

# Make window zoom to fullscreen: shift + lalt - f
shift + lalt - f : yabai -m window --toggle zoom-fullscreen

# Make window zoom to parent node: lalt - f 
lalt - f : yabai -m window --toggle zoom-parent

## Window Movement (shift + lalt - ...)
# Moving windows in spaces: shift + lalt - {j, k, l, ö}
shift + lalt - j : yabai -m window --warp west || $(yabai -m window --display west && yabai -m display --focus west && yabai -m window --warp last) || yabai -m window --move rel:-10:0
shift + lalt - k : yabai -m window --warp south || $(yabai -m window --display south && yabai -m display --focus south) || yabai -m window --move rel:0:10
shift + lalt - l : yabai -m window --warp north || $(yabai -m window --display north && yabai -m display --focus north) || yabai -m window --move rel:0:-10
shift + lalt - 0x29 : yabai -m window --warp east || $(yabai -m window --display east && yabai -m display --focus east && yabai -m window --warp first) || yabai -m window --move rel:10:0

# Toggle split orientation of the selected windows node: shift + lalt - s
shift + lalt - s : yabai -m window --toggle split

# Moving windows between spaces: shift + lalt - {1, 2, 3, 4, p, n } (Assumes 4 Spaces Max per Display)
shift + lalt - 1 : SPACES=($(yabai -m query --displays --display | jq '.spaces[]')) && [[ -n $SPACES[1] ]] \
                  && yabai -m window --space $SPACES[1]

shift + lalt - 2 : SPACES=($(yabai -m query --displays --display | jq '.spaces[]')) && [[ -n $SPACES[2] ]] \
                  && yabai -m window --space $SPACES[2]

shift + lalt - 3 : SPACES=($(yabai -m query --displays --display | jq '.spaces[]')) && [[ -n $SPACES[3] ]] \
                  && yabai -m window --space $SPACES[3]

shift + lalt - 4 : SPACES=($(yabai -m query --displays --display | jq '.spaces[]')) && [[ -n $SPACES[4] ]] \
                  && yabai -m window --space $SPACES[4]

shift + lalt - p : yabai -m window --space prev && yabai -m space --focus prev
shift + lalt - n : yabai -m window --space next && yabai -m space --focus next

# Mirror Space on X and Y Axis: shift + lalt - {x, y}
shift + lalt - x : yabai -m space --mirror x-axis
shift + lalt - y : yabai -m space --mirror y-axis

## Stacks (shift + ctrl - ...)
# Add the active window to the window or stack to the {direction}: shift + ctrl - {j, k, l, ö}
shift + ctrl - j    : yabai -m window  west --stack $(yabai -m query --windows --window | jq -r '.id')
shift + ctrl - k    : yabai -m window south --stack $(yabai -m query --windows --window | jq -r '.id')
shift + ctrl - l    : yabai -m window north --stack $(yabai -m query --windows --window | jq -r '.id')
shift + ctrl - 0x29 : yabai -m window  east --stack $(yabai -m query --windows --window | jq -r '.id')

# Stack Navigation: shift + ctrl - {n, p}
shift + ctrl - n : yabai -m window --focus stack.next
shift + ctrl - p : yabai -m window --focus stack.prev

## Resize (ctrl + lalt - ...)
# Resize windows: ctrl + lalt - {j, k, l, ö}
ctrl + lalt - j    : yabai -m window --resize right:-100:0 || yabai -m window --resize left:-100:0
ctrl + lalt - k    : yabai -m window --resize bottom:0:100 || yabai -m window --resize top:0:100
ctrl + lalt - l    : yabai -m window --resize bottom:0:-100 || yabai -m window --resize top:0:-100
ctrl + lalt - 0x29 : yabai -m window --resize right:100:0 || yabai -m window --resize left:100:0

# Equalize size of windows: ctrl + lalt - e
ctrl + lalt - e : yabai -m space --balance

# Enable / Disable gaps in current workspace: ctrl + lalt - g
ctrl + lalt - g : yabai -m space --toggle padding; yabai -m space --toggle gap

## Insertion (shift + ctrl + lalt - ...)
# Set insertion point for focused container: shift + ctrl + lalt - {j, k, l, ö, s}
shift + ctrl + lalt - j : yabai -m window --insert west
shift + ctrl + lalt - k : yabai -m window --insert south
shift + ctrl + lalt - l : yabai -m window --insert north
shift + ctrl + lalt - 0x29 : yabai -m window --insert east
shift + ctrl + lalt - s : yabai -m window --insert stack

# New window in hor./ vert. splits for all applications with yabai
lalt - s : yabai -m window --insert east;  skhd -k "cmd - n"
lalt - v : yabai -m window --insert south; skhd -k "cmd - n"

# Toggle sketchybar
shift + lalt - space : sketchybar --bar hidden=toggle