window management & simple hotkey daemon

- yabai & skhd -

Brew install

brew install koekeishiya/formulae/skhd
brew install koekeishiya/formulae/yabai

Config files

~/.config/yabai/yabairc
~/.config/skhd/skhdrc

yabairc

#!/usr/bin/env sh

# global settings
yabai -m config mouse_follows_focus          on
yabai -m config focus_follows_mouse          off
yabai -m config window_origin_display        default
yabai -m config window_placement             second_child
yabai -m config window_topmost               off
yabai -m config window_shadow                on
yabai -m config window_opacity               off
yabai -m config window_opacity_duration      0.0
yabai -m config active_window_opacity        1.0
yabai -m config normal_window_opacity        0.90
yabai -m config window_border                on
yabai -m config window_border_width          2
# https://convertingcolors.com/hex-color-FF00FF.html?search=Hex(FF00FF)
yabai -m config active_window_border_color   0xFF39FF14
#yabai -m config active_window_border_color   0xFF91BAF8
yabai -m config normal_window_border_color   0xff555555
yabai -m config insert_feedback_color        0xffd75f5f
yabai -m config split_ratio                  0.50
yabai -m config auto_balance                 off
yabai -m config mouse_modifier               fn
yabai -m config mouse_action1                move
yabai -m config mouse_action2                resize
yabai -m config mouse_drop_action            swap

# general space settings
yabai -m config layout                       bsp
yabai -m config top_padding                  15
yabai -m config bottom_padding               15
yabai -m config left_padding                 15
# NOTE: for OBS floating head
# yabai -m config left_padding                 450
yabai -m config right_padding                15
yabai -m config window_gap                   15

# apps to not manage (ignore)
yabai -m rule --add app="^Finder$" manage=off
yabai -m rule --add app="^System Settings$" manage=off
yabai -m rule --add app="^Archive Utility$" manage=off
yabai -m rule --add app="^Logi Options$" manage=off
yabai -m rule --add app="Raycast" manage=off
yabai -m rule --add app="^Music$" manage=off
yabai -m rule --add app="^IntelliJ IDEA$" manage=off
yabai -m rule --add app="Toolbox$" manage=off
yabai -m rule --add app="Android Studio$" manage=off
yabai -m rule --add app="^1Password 7$" manage=off
yabai -m rule --add app="^Messages$" manage=off
yabai -m rule --add app="^Finder$" manage=off

echo "yabai configuration loaded.."

skhdrc

Launch Commands

# === Launch Commands ===
# Start IntelliJ IDEA Ultimate
cmd + shift - i : osascript -e "tell application \"/Users/$USER/Applications/IntelliJ IDEA Ultimate.app\" to activate"
# Start Safari
cmd + shift - s : osascript -e "tell application \"Safari\" to activate"
# Start Warp
cmd + shift - w : osascript -e "tell application \"Warp\" to activate"
# === Navigation ===
# move window to space #
ctrl + alt - 1 : yabai -m window --space 1
ctrl + alt - 2 : yabai -m window --space 2
ctrl + alt - 3 : yabai -m window --space 3
ctrl + alt - 4 : yabai -m window --space 4
ctrl + alt - 5 : yabai -m window --space 5
ctrl + alt - 6 : yabai -m window --space 6
ctrl + alt - 7 : yabai -m window --space 7
ctrl + alt - 8 : yabai -m window --space 8
ctrl + alt - 9 : yabai -m window --space 9
ctrl + alt - 0 : yabai -m window --space 10
# move window to prev and next space
ctrl + alt - p : yabai -m window --space prev;
ctrl + alt - n : yabai -m window --space next;

# change window focus within space
cmd - h : yabai -m window --focus west
cmd - j : yabai -m window --focus south
cmd - k : yabai -m window --focus north
cmd - l : yabai -m window --focus east
# support also arrows
cmd - left : yabai -m window --focus west
cmd - down : yabai -m window --focus south
cmd - up : yabai -m window --focus north
cmd - right : yabai -m window --focus east


Moving Windows Around

# -- Moving Windows Around --
# swap windows
shift + cmd - j : yabai -m window --swap south
shift + cmd - k : yabai -m window --swap north
shift + cmd - h : yabai -m window --swap west
shift + cmd - l : yabai -m window --swap east

# move window and split
ctrl + cmd - j : yabai -m window --warp south
ctrl + cmd - k : yabai -m window --warp north
ctrl + cmd - h : yabai -m window --warp west
ctrl + cmd - l : yabai -m window --warp east

Modifying Window

# -- Modifying the Layout --
# rotate windows clockwise / anticlockwise
alt - r         : yabai -m space --rotate 270
shift + alt - r : yabai -m space --rotate 90

# rotate on X and Y axis
alt - x : yabai -m space --mirror x-axis
alt - y : yabai -m space --mirror y-axis

# toggle window float
alt - t : yabai -m window --toggle float --grid 4:4:1:1:20:20

# toggle padding and gap
alt - g : yabai -m space --toggle padding; yabai -m space --toggle gap

# maximize a window
alt - m : yabai -m window --toggle zoom-fullscreen

# balance out tree of windows (resize to occupy same area)
alt - b : yabai -m space --balance

# balance out tree of windows (resize to occupy same area)
alt - b : yabai -m space --balance 

# set insertion point for focused container
shift + ctrl + alt - h : yabai -m window --insert west
shift + ctrl + alt - j : yabai -m window --insert south
shift + ctrl + alt - k : yabai -m window --insert north
shift + ctrl + alt - l : yabai -m window --insert east

# change window sizes and border color
# define border color 
:: resize @ : yabai -m config active_window_border_color 0xFFFF00FF
#:: default : yabai -m config active_window_border_color 0xFF91BAF8
:: default : yabai -m config active_window_border_color  0xFF39FF14
# toggle mode 
resize < hyper - r ; default
default < hyper - r ; resize
# change wind:w
# ow size
resize < h : yabai -m window --resize left:-50:0; yabai -m window --resize right:-50:0
resize < j : yabai -m window --resize bottom:0:50; yabai -m window --resize top:0:50
resize < k   : yabai -m window --resize top:0:-50; yabai -m window --resize bottom:0:-50
resize < l : yabai -m window --resize right:50:0; yabai -m window --resize left:50:0
# support also arrows
resize < left : yabai -m window --resize left:-50:0; yabai -m window --resize right:-50:0
resize < down : yabai -m window --resize bottom:0:50; yabai -m window --resize top:0:50
resize < up   : yabai -m window --resize top:0:-50; yabai -m window --resize bottom:0:-50
resize < right : yabai -m window --resize right:50:0; yabai -m window --resize left:50:0

Manage yabai & skhd

# -- Manage yabai and skhd --
# stop/start/restart yabai
ctrl + alt - q : yabai --stop-service
ctrl + alt - s : yabai --start-service
ctrl + alt - r : yabai --restart-service
# Reload skhd configuration
shift + cmd - r : skhd --reload

Disable OSX built-in mappings

# -- disable some OSX built-in key mappings --
# disable osx hide window
cmd - h : :
# disable osx minimize window
alt + cmd - m : :
cmd - m : :

Last updated