nixfiles/darwin/wm/yabai.nix
2023-03-03 09:56:30 -08:00

91 lines
2.8 KiB
Nix
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

_: {
services.yabai = {
enable = true;
enableScriptingAddition = true;
config = {
# layout
layout = "bsp";
window_origin_display = "focused";
split_ratio = "0.50";
mouse_modifier = "alt";
mouse_action1 = "move";
mouse_action2 = "resize";
mouse_drop_action = "stack";
external_bar = "main:26:0";
# window border
window_border = "on";
window_border_width = 3;
window_border_hidpi = "on";
# focus
focus_follows_mouse = "off";
mouse_follows_focus = "off";
# window
window_placement = "second_child";
window_border_blur = "on";
# paddings
top_padding = 10;
bottom_padding = 10;
left_padding = 10;
right_padding = 10;
window_gap = 10;
};
extraConfig = ''
# spaces
function setup_space {
local idx="$1"
local name="$2"
local space=
echo "setup space $idx : $name"
space=$(yabai -m query --spaces --space "$idx")
if [ -z "$space" ]; then
yabai -m space --create
fi
yabai -m space "$idx" --label "$name"
}
setup_space 1 work
setup_space 2 chat
setup_space 3 www
setup_space 4 code
setup_space 5 term
setup_space 6 music
setup_space 7 brain
setup_space 8 office
setup_space 9 email
setup_space 10 misc
# rules
yabai -m rule --add app='System Preferences' manage=off
yabai -m rule --add app='Yubico Authenticator' manage=off
yabai -m rule --add app='YubiKey Manager' manage=off
yabai -m rule --add app='YubiKey Personalization Tool' manage=off
yabai -m rule --add app="^Slack$" space=1
yabai -m rule --add app="^Microsoft Teams$" space=1
yabai -m rule --add app="^Discord$" space=2
yabai -m rule --add app="^Element$" space=2
yabai -m rule --add app="^Telegram Desktop$" space=2
yabai -m rule --add app="^Brave Browser$" space=^3
yabai -m rule --add app="^Orion$" space=^3
yabai -m rule --add app="^VSCodium$" space=^4
yabai -m rule --add app="^Spotify$" space=6
yabai -m rule --add app="^Obsidian$" space=7
yabai -m rule --add app="^Microsoft Word$" space=8
yabai -m rule --add app="^Microsoft Powerpoint$" space=8
yabai -m rule --add app="^Microsoft Excel$" space=8
yabai -m rule --add app="^Microsoft Outlook$" space=9
yabai -m rule --add app="^Calendar$" space=9
yabai -m rule --add app="^Mail$" space=9
# signals
yabai -m signal --add event=window_focused action="sketchybar --trigger window_focus"
yabai -m signal --add event=window_created action="sketchybar --trigger windows_on_spaces"
yabai -m signal --add event=window_destroyed action="sketchybar --trigger windows_on_spaces"
'';
};
}