Last active
April 2, 2024 05:43
-
-
Save tiagojsag/8dd7d604deee6f525034a4c2991a8624 to your computer and use it in GitHub Desktop.
Yabai + skhd
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# restart yabai | |
cmd + ctrl + shift - r : yabai --restart-service | |
# Launch terminal | |
cmd - return: bash ~/bin/itermLaunch.sh | |
# switch yabai between stack and bsp modes | |
ctrl + shift - space : yabai -m space --layout "$(yabai -m query --spaces --space | jq -r 'if .type == "bsp" then "stack" else "bsp" end')" | |
# toggle yabai split | |
ctrl + shift - e : yabai -m window --toggle split | |
# focus window in bsp mode | |
cmd + shift - right: yabai -m query --spaces --space \ | |
| jq -re ".index" \ | |
| xargs -I{} yabai -m query --windows --space {} \ | |
| jq -sre 'add | map(select(."is-minimized"==false)) | sort_by(.display, .frame.y, .frame.x, .id) | . as $array | length as $array_length | index(map(select(."has-focus"==true))) as $has_index | if $has_index > 0 then nth($has_index - 1).id else nth($array_length - 1).id end' \ | |
| xargs -I{} yabai -m window --focus {} | |
cmd + shift - left: yabai -m query --spaces --space \ | |
| jq -re ".index" \ | |
| xargs -I{} yabai -m query --windows --space {} \ | |
| jq -sre 'add | map(select(."is-minimized"==false)) | sort_by(.display, .frame.y, .frame.x, .id) | . as $array | length as $array_length | index(map(select(."has-focus"==true))) as $has_index | if $array_length - 1 > $has_index then nth($has_index + 1).id else nth(0).id end' \ | |
| xargs -I{} yabai -m window --focus {} | |
ctrl - up: yabai -m window --focus stack.prev 2> /dev/null || yabai -m window --focus north | |
ctrl - right: yabai -m window --focus east | |
ctrl - left: yabai -m window --focus west | |
ctrl - down: yabai -m window --focus stack.next 2> /dev/null || yabai -m window --focus south | |
# resize window | |
cmd + ctrl + shift - down: yabai -m window north --resize bottom:0:100 2> /dev/null || yabai -m window --resize bottom:0:100 | |
cmd + ctrl + shift - up: yabai -m window south --resize top:0:-100 2> /dev/null || yabai -m window --resize top:0:-100 | |
cmd + ctrl + shift - right: yabai -m window east --resize left:100:0 2> /dev/null || yabai -m window --resize left:100:0 | |
cmd + ctrl + shift - left: yabai -m window west --resize right:-100:0 2> /dev/null || yabai -m window --resize right:-100:0 | |
# stack window | |
#cmd + ctrl + alt - down: yabai -m window --stack south | |
#cmd + ctrl + alt - up: yabai -m window --stack north | |
#cmd + ctrl + alt - right: yabai -m window --stack east | |
#cmd + ctrl + alt - left: yabai -m window --stack west | |
cmd + ctrl + alt - down: yabai -m window --focus south && yabai -m window --stack recent && yabai -m window --focus recent | |
cmd + ctrl + alt - up: yabai -m window --focus north && yabai -m window --stack recent && yabai -m window --focus recent | |
cmd + ctrl + alt - right: yabai -m window --focus east && yabai -m window --stack recent && yabai -m window --focus recent | |
cmd + ctrl + alt - left: yabai -m window --focus west && yabai -m window --stack recent && yabai -m window --focus recent | |
# warp window | |
ctrl + shift - up: yabai -m window --warp north 2> /dev/null || if [ $(yabai -m query --windows --window | jq '."split-type"') == "horizontal" ]; then yabai -m window --toggle split; fi && yabai -m window --insert west && yabai -m window $window --toggle float && yabai -m window $window --toggle float | |
ctrl + shift - down: yabai -m window --warp south 2> /dev/null || if [ $(yabai -m query --windows --window | jq '."split-type"') == "horizontal" ]; then yabai -m window --toggle split; fi && yabai -m window --insert west && yabai -m window $window --toggle float && yabai -m window $window --toggle float | |
ctrl + shift - left: yabai -m window --warp west 2> /dev/null || if [ $(yabai -m query --windows --window | jq '."split-type"') == "vertical" ]; then yabai -m window --toggle split; fi && yabai -m window --insert west && yabai -m window $window --toggle float && yabai -m window $window --toggle float | |
ctrl + shift - right: yabai -m window --warp east 2> /dev/null || if [ $(yabai -m query --windows --window | jq '."split-type"') == "vertical" ]; then yabai -m window --toggle split; fi yabai -m window --insert east && yabai -m window $window --toggle float && yabai -m window $window --toggle float | |
# toggle fullscreen | |
cmd + ctrl + shift - f:yabai -m window --toggle zoom-parent | |
ctrl + shift - f:yabai -m window --toggle zoom-fullscreen | |
# toggle float | |
ctrl + shift - t: yabai -m window --toggle float | |
# toggle stackline icons | |
ctrl + shift - i: hs -c 'stackline.config:toggle("appearance.showIcons")' | |
# move windows to spaces | |
ctrl + shift - 1 : yabai -m window --space 1 | |
ctrl + shift - 2 : yabai -m window --space 2 | |
ctrl + shift - 3 : yabai -m window --space 3 | |
ctrl + shift - 4 : yabai -m window --space 4 | |
ctrl + shift - 5 : yabai -m window --space 5 | |
ctrl + shift - 6 : yabai -m window --space 6 | |
ctrl + shift - 7 : yabai -m window --space 7 | |
ctrl + shift - 8 : yabai -m window --space 8 | |
ctrl + shift - 9 : yabai -m window --space 9 | |
ctrl + shift - 0 : yabai -m window --space 10 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# default layout (can be bsp, stack or float) | |
yabai -m config layout bsp | |
# New window spawns to the right if vertical split, or bottom if horizontal split | |
yabai -m config window_placement second_child | |
# center mouse on window with focus | |
yabai -m config focus_follows_mouse autoraise | |
yabai -m config mouse_follows_focus off | |
# modifier for clicking and dragging with mouse | |
yabai -m config mouse_modifier alt | |
# set modifier + left-click drag to move window | |
yabai -m config mouse_action1 move | |
# set modifier + right-click drag to resize window | |
yabai -m config mouse_action2 resize | |
# when window is dropped in center of another window, swap them (on edges it will split it) | |
yabai -m mouse_drop_action swap | |
yabai -m rule --add app="^System Settings$" manage=off | |
yabai -m rule --add app="^Calculator$" manage=off | |
yabai -m rule --add app="^Karabiner-Elements$" manage=off | |
yabai -m rule --add app="^Keyboard Setup Assistant$" manage=off |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment