#!/usr/bin/env sh # necessary to load scripting-addition during startup on macOS Big Sur # *yabai --load-sa* is configured to run through sudo without a password sudo yabai --load-sa yabai -m signal --add event=dock_did_restart action="sudo yabai --load-sa" # mission-control desktop labels yabai -m space 1 --label Terminal yabai -m space 2 --label Code yabai -m space 3 --label Browser yabai -m space 4 --label Notes yabai -m space 5 --label Temp yabai -m space 6 --label Finder yabai -m space 7 --label Settings yabai -m space 8 --label Media yabai -m space 9 --label Messenger yabai -m space 10 --label Mail # window rules yabai -m rule --add app="^kitty$" space=1 yabai -m rule --add app="^Code$" space=2 yabai -m rule --add app="^Safari$" space=3 yabai -m rule --add app="^Google Chrome$" space=3 yabai -m rule --add app="^Firefox$" space=3 yabai -m rule --add app="^(Microsoft Word|Preview|Notes|Obsidian|Anki)$" space=4 yabai -m rule --add app="^Excel$" space=4 manage=off yabai -m rule --add app="^(MySQLWorkbench|DBeaver)$" space=5 yabai -m rule --add app="^Finder$" space=6 yabai -m rule --add app="^(universalAccessAuthWarn|Activity Monitor|Archive Utility|Alfred Preferences|Bartender 5|BetterTouchTool|Karabiner-Elements|System Settings)$" space=7 yabai -m rule --add app="^IINA$" space=8 yabai -m rule --add app="^Music$" space=8 yabai -m rule --add app="^Spotify$" space=8 yabai -m rule --add app="^Discord$" space=9 grid=1:1:0:0:1:1 yabai -m rule --add app="^Messages$" space=9 grid=1:1:0:0:1:1 yabai -m rule --add app="^KakaoTalk$" space=9 grid=1:1:0:0:1:1 yabai -m rule --add app="^WeChat$" space=9 grid=1:1:0:0:1:1 yabai -m rule --add app="^WhatsApp$" space=9 grid=1:1:0:0:1:1 yabai -m rule --add app="^Log in$" space=9 grid=1:1:0:0:1:1 manage=off yabai -m rule --add app="^Mail$" space=10 grid=1:1:0:0:1:1 yabai -m rule --add app="^Thunderbird$" space=10 grid=1:1:0:0:1:1 yabai -m rule --add app="^FaceTime$" manage=off yabai -m rule --add app="^CleanShot X$" manage=off # yabai -m rule --add app="^mpv$" manage=off border=off sticky=on layer=above opacity=1.0 grid=8:8:6:0:2:2 # signals yabai -m signal --add event=window_destroyed active=yes action="yabai -m query --windows --window &> /dev/null || yabai -m window --focus mouse &> /dev/null || yabai -m window --focus \$(yabai -m query --windows --space | jq .[0].id) &> /dev/null" yabai -m signal --add event=window_minimized active=yes action="if \$(yabai -m query --windows --window \$YABAI_WINDOW_ID | jq -r '.\"is-floating\"'); then yabai -m query --windows --window &> /dev/null || yabai -m window --focus mouse &> /dev/null || yabai -m window --focus \$(yabai -m query --windows --space | jq .[0].id) &> /dev/null; fi" # specific space settings bsp/float/stack yabai -m config --space 1 layout bsp yabai -m config --space 2 layout bsp yabai -m config --space 3 layout bsp yabai -m config --space 4 layout bsp yabai -m config --space 5 layout bsp yabai -m config --space 6 layout bsp yabai -m config --space 7 layout float yabai -m config --space 8 layout bsp yabai -m config --space 9 layout bsp yabai -m config --space 0 layout float # global settings yabai -m config \ \ mouse_follows_focus on \ focus_follows_mouse autoraise \ window_placement first_child \ window_topmost off \ window_shadow off \ window_opacity on \ window_opacity_duration 0.25 \ active_window_opacity 0.90 \ normal_window_opacity 0.50 \ window_animation_duration 0.25 \ insert_feedback_color 0xaad75f5f \ split_ratio 0.50 \ split_type auto \ auto_balance off \ mouse_modifier ctrl \ mouse_action1 move \ mouse_action2 resize \ mouse_drop_action swap \ layout bsp \ top_padding 10 \ left_padding 10 \ right_padding 10 \ bottom_padding 35 \ window_gap 10 # external_bar all:32:0 \ # sketchybar yabai -m signal --add event=window_focused action="sketchybar --trigger window_focus" yabai -m signal --add event=display_added action="sleep 3 && $HOME/.config/yabai/create_spaces.sh" yabai -m signal --add event=display_removed action="sleep 3 && $HOME/.config/yabai/create_spaces.sh" yabai -m signal --add event=window_created action="sketchybar -m --trigger window_change &> /dev/null" yabai -m signal --add event=window_destroyed action="sketchybar -m --trigger window_change &> /dev/null" # borders borders \ style=squre \ active_color=0xff00ff00 \ width=6 \ hidpi=on &