Skip to content

Commit

Permalink
configure yabai for ultrawide display
Browse files Browse the repository at this point in the history
  • Loading branch information
kvaps committed Jan 12, 2022
1 parent 24b6407 commit caeba15
Show file tree
Hide file tree
Showing 3 changed files with 57 additions and 25 deletions.
74 changes: 50 additions & 24 deletions skhd/.config/skhd/skhdrc
Original file line number Diff line number Diff line change
Expand Up @@ -5,17 +5,28 @@ cmd - return : open -n -a "/Applications/Alacritty.app"
alt - return : open -n -a "/Applications/Alacritty.app"


# Switch sticky windows
# 0x32: ` (tilde)
#alt - 0x32: yabai -m window --focus "$(yabai -m query --windows | jq -re "[sort_by(.id) | .[] | select(.app == (\"Firefox\", \"Telegram\")) | .id] | nth(1 + index($(yabai -m query --windows --window | jq '.id'))) // first")"
cmd - 0x32: yabai -m window --focus "$(yabai -m query --windows | jq -re "[ [.[] | select(.sticky==1)] | unique_by(.id) | sort_by(.id)[] | .id ] | nth(1 + index($(yabai -m query --windows --window | jq '.id'))) // first")"



alt - m : yabai -m window --toggle zoom-fullscreen; yabai -m window --focus "$(yabai -m query --windows --window | jq -er .id)"



# Map Czech symbols (ralt is mapped to caps_lock)
ralt - a : skhd -t 'á'
ralt + shift - a : skhd -t 'Á'
ralt - c : skhd -t 'č'
ralt + shift - c : skhd -t 'Č'
ralt - d : skhd -t 'ď'
ralt + shift - d : skhd -t 'Ď'
ralt - e : skhd -t 'é'
ralt + shift - e : skhd -t 'É'
ralt - w : skhd -t 'ě'
ralt + shift - w : skhd -t 'Ě'
ralt - e : skhd -t 'ě'
ralt + shift - e : skhd -t 'Ě'
ralt - w : skhd -t 'é'
ralt + shift - w : skhd -t 'É'
ralt - i : skhd -t 'í'
ralt + shift - i : skhd -t 'Í'
ralt - n : skhd -t 'ň'
Expand All @@ -28,34 +39,46 @@ ralt - s : skhd -t 'š'
ralt + shift - s : skhd -t 'Š'
ralt - t : skhd -t 'ť'
ralt + shift - t : skhd -t 'Ť'
ralt - u : skhd -t 'ú'
ralt + shift - u : skhd -t 'Ú'
ralt - j : skhd -t 'ů'
ralt + shift - j : skhd -t 'Ů'
ralt - u : skhd -t 'ů'
ralt + shift - u : skhd -t 'Ů'
ralt - j : skhd -t 'ú'
ralt + shift - j : skhd -t 'Ú'
ralt - y : skhd -t 'ý'
ralt + shift - y : skhd -t 'Ý'
ralt - z : skhd -t 'ž'
ralt + shift - z : skhd -t 'Ž'


# fast focus desktop
cmd - left : yabai -m space --focus $(yabai -m query --spaces --display | jq -r 'sort_by(.index) | (.[] | select(.focused==1)).index as $cur | [(.[]|select(.index == $cur-1)), last] | first.index')
cmd - right : yabai -m space --focus $(yabai -m query --spaces --display | jq -r 'sort_by(.index) | (.[] | select(.focused==1)).index as $cur | [(.[]|select(.index == $cur+1)), first] | first.index')
cmd - down : yabai -m display --focus prev || yabai -m display --focus last
cmd - up : yabai -m display --focus next || yabai -m display --focus first
cmd - 1 : yabai -m space --focus $(yabai -m query --displays --display | jq '.spaces[0]')
cmd - 2 : yabai -m space --focus $(yabai -m query --displays --display | jq '.spaces[1]')
cmd - 3 : yabai -m space --focus $(yabai -m query --displays --display | jq '.spaces[2]')
cmd - 4 : yabai -m space --focus $(yabai -m query --displays --display | jq '.spaces[3]')
cmd - 5 : yabai -m space --focus $(yabai -m query --displays --display | jq '.spaces[4]')
cmd - 6 : yabai -m space --focus $(yabai -m query --displays --display | jq '.spaces[5]')
cmd - 7 : yabai -m space --focus $(yabai -m query --displays --display | jq '.spaces[6]')
cmd - 8 : yabai -m space --focus $(yabai -m query --displays --display | jq '.spaces[7]')
cmd - 9 : yabai -m space --focus $(yabai -m query --displays --display | jq '.spaces[8]')
#cmd - left : yabai -m space --focus $(yabai -m query --spaces --display | jq -r 'sort_by(.index) | (.[] | select(.focused==1)).index as $cur | [(.[]|select(.index == $cur-1)), last] | first.index')
#cmd - right : yabai -m space --focus $(yabai -m query --spaces --display | jq -r 'sort_by(.index) | (.[] | select(.focused==1)).index as $cur | [(.[]|select(.index == $cur+1)), first] | first.index')
#cmd - down : yabai -m display --focus prev || yabai -m display --focus last
#cmd - up : yabai -m display --focus next || yabai -m display --focus first
cmd - escape : yabai -m display --focus next || yabai -m display --focus first

# Move focus between unsticky windows
# TODO: switch focus from sticky windows does not work
cmd - 1 : yabai -m space --focus $(yabai -m query --displays --display | jq '.spaces[0]'); yabai -m window --focus $(yabai -m query --windows --space | jq -r '[.[]|select(.sticky==0)] | sort_by(.id) | to_entries | (.[]|select(.value.focused==1)).key as $cur | [(.[]|select(.key==$cur)), first] | first.value.id')
cmd - 2 : yabai -m space --focus $(yabai -m query --displays --display | jq '.spaces[1]'); yabai -m window --focus $(yabai -m query --windows --space | jq -r '[.[]|select(.sticky==0)] | sort_by(.id) | to_entries | (.[]|select(.value.focused==1)).key as $cur | [(.[]|select(.key==$cur)), first] | first.value.id')

cmd - 3 : yabai -m space --focus $(yabai -m query --displays --display | jq '.spaces[2]'); yabai -m window --focus $(yabai -m query --windows --space | jq -r '[.[]|select(.sticky==0)] | sort_by(.id) | to_entries | (.[]|select(.value.focused==1)).key as $cur | [(.[]|select(.key==$cur)), first] | first.value.id')

cmd - 4 : yabai -m space --focus $(yabai -m query --displays --display | jq '.spaces[3]'); yabai -m window --focus $(yabai -m query --windows --space | jq -r '[.[]|select(.sticky==0)] | sort_by(.id) | to_entries | (.[]|select(.value.focused==1)).key as $cur | [(.[]|select(.key==$cur)), first] | first.value.id')

cmd - 5 : yabai -m space --focus $(yabai -m query --displays --display | jq '.spaces[4]'); yabai -m window --focus $(yabai -m query --windows --space | jq -r '[.[]|select(.sticky==0)] | sort_by(.id) | to_entries | (.[]|select(.value.focused==1)).key as $cur | [(.[]|select(.key==$cur)), first] | first.value.id')

cmd - 6 : yabai -m space --focus $(yabai -m query --displays --display | jq '.spaces[5]'); yabai -m window --focus $(yabai -m query --windows --space | jq -r '[.[]|select(.sticky==0)] | sort_by(.id) | to_entries | (.[]|select(.value.focused==1)).key as $cur | [(.[]|select(.key==$cur)), first] | first.value.id')

cmd - 7 : yabai -m space --focus $(yabai -m query --displays --display | jq '.spaces[6]'); yabai -m window --focus $(yabai -m query --windows --space | jq -r '[.[]|select(.sticky==0)] | sort_by(.id) | to_entries | (.[]|select(.value.focused==1)).key as $cur | [(.[]|select(.key==$cur)), first] | first.value.id')

cmd - 8 : yabai -m space --focus $(yabai -m query --displays --display | jq '.spaces[7]'); yabai -m window --focus $(yabai -m query --windows --space | jq -r '[.[]|select(.sticky==0)] | sort_by(.id) | to_entries | (.[]|select(.value.focused==1)).key as $cur | [(.[]|select(.key==$cur)), first] | first.value.id')

cmd - 9 : yabai -m space --focus $(yabai -m query --displays --display | jq '.spaces[8]'); yabai -m window --focus $(yabai -m query --windows --space | jq -r '[.[]|select(.sticky==0)] | sort_by(.id) | to_entries | (.[]|select(.value.focused==1)).key as $cur | [(.[]|select(.key==$cur)), first] | first.value.id')


# Navigation
cmd - tab : yabai -m window --focus $(yabai -m query --windows --space | jq -r 'sort_by(.id) | to_entries | (.[]|select(.value.focused==1)).key as $cur | [(.[]|select(.key==$cur+1)), first] | first.value.id')
cmd - f19 : yabai -m window --focus $(yabai -m query --windows --space | jq -r 'sort_by(.id) | to_entries | (.[]|select(.value.focused==1)).key as $cur | [(.[]|select(.key==$cur-1)), last ] | first.value.id')
cmd - tab : yabai -m window --focus $(yabai -m query --windows --space | jq -r '[.[]|select(.sticky==0)] | sort_by(.id) | to_entries | (.[]|select(.value.focused==1)).key as $cur | [(.[]|select(.key==$cur+1)), first] | first.value.id')
cmd - f19 : yabai -m window --focus $(yabai -m query --windows --space | jq -r '[.[]|select(.sticky==0)] | sort_by(.id) | to_entries | (.[]|select(.value.focused==1)).key as $cur | [(.[]|select(.key==$cur-1)), last] | first.value.id')
lctrl - f19 : skhd -k "lctrl - tab"
alt - left : yabai -m window --focus west
alt - down : yabai -m window --focus south
Expand Down Expand Up @@ -131,7 +154,7 @@ cmd + lctrl - w : yabai -m space --focus $(yabai -m query --spaces --displa
osascript -e 'tell application id "tracesOf.Uebersicht" to set hidden of widget id "simple-bar-spaces-jsx" to false'

# Float / Unfloat window
cmd + lctrl - f :
cmd + lctrl - f : \
file="$HOME/.config/yabai/floating_windows"; \
app=$(yabai -m query --windows --window | jq '"^\(.app)$"'); \
title=$(yabai -m query --windows --window | jq '"^\(.title)$"'); \
Expand All @@ -140,6 +163,9 @@ cmd + lctrl - f :
(echo "$rule manage=off" | tee "$file.tmp" | sh -x && cat "$file" >> "$file.tmp" 2>/dev/null; sort -u "$file.tmp" > "$file"; rm -f "$file.tmp") || \
(echo "$rule manage=on" | sh -sx; sed -i "/$rule manage=off/d" "$file")

# Stick / Unstick window
cmd + lctrl - s : yabai -m window --toggle sticky

# Restart Yabai
cmd + lctrl - r : \
/usr/bin/env osascript <<< \
Expand Down
2 changes: 2 additions & 0 deletions yabai/.config/yabai/floating_windows
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
yabai -m rule --add app="^QuickTime Player$" title="^output.mp4$" manage=off
yabai -m rule --add app="^VLC$" title="^Ruxpin - Marglyttan$" manage=off
6 changes: 5 additions & 1 deletion yabai/.config/yabai/yabairc
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ yabai -m config mouse_drop_action swap
yabai -m config layout bsp
yabai -m config top_padding 06
yabai -m config bottom_padding 06
yabai -m config left_padding 06
yabai -m config left_padding $(yabai -m query --displays --display | jq '.frame | if (.w > 2000) then .w/2 else 06 end')
yabai -m config right_padding 06
yabai -m config window_gap 06

Expand All @@ -55,6 +55,10 @@ yabai -m signal --add event=window_destroyed action="yabai -m query --windows --
yabai -m signal --add event=application_terminated action="yabai -m query --windows --window &> /dev/null || yabai -m window --focus mouse"


# These applications are always sticky
yabai -m rule --add app="^Firefox$" manage=off sticky=on
yabai -m rule --add app="^Telegram$" manage=off sticky=on

# Floating windows configuration
yabai -m rule --add app="^Firefox$" title="^Opening " manage=off
yabai -m rule --add app="^GIMP-" manage=off
Expand Down

0 comments on commit caeba15

Please sign in to comment.