nixFlake/common/darwin/yabai.nix
2024-09-21 10:28:54 -07:00

79 lines
2.1 KiB
Nix

{
config,
pkgs,
lib,
...
}: let
inherit (lib) lists strings;
floating-apps = [
"System Settings"
"Software Update"
"Kodi"
"App Store"
"Activity Monitor"
"Calculator"
"Dictionary"
"mpv"
"Software Update"
];
floating-rules = lists.forEach floating-apps (
name: "yabai -m rule --add app='${name}' manage=off"
);
floating-rules-str = strings.concatStringsSep "\n" floating-rules;
in {
services.yabai = {
enable = true;
enableScriptingAddition = true;
config = {
window_placement = "second_child";
window_shadow = "on";
window_border = "off";
window_border_width = "2";
active_window_border_color = "0xff$CACTV";
normal_window_border_color = "0xff$CNORM";
insert_window_border_color = "0xff$CINSE";
mouse_follows_focus = "off";
focus_follows_mouse = "autoraise";
window_opacity = "off";
window_opacity_duration = "0.0";
active_window_opacity = "1.0";
normal_window_opacity = "0.90";
split_ratio = "0.7";
auto_balance = "off";
mouse_modifier = "ctrl";
mouse_action1 = "move";
mouse_action2 = "resize";
mouse_drop_action = "swap";
# Turning on breaks kodi
window_topmost = "off";
layout = "bsp";
top_padding = "10";
bottom_padding = "10";
left_padding = "10";
right_padding = "10";
window_gap = "10";
};
extraConfig =
floating-rules-str
+ "\n"
+ ''
yabai -m rule --add label="Finder" app="^Finder$" title="(Co(py|nnect)|Move|Info|Pref)" manage=off
yabai -m rule --add label="Safari" app="^Safari$" title="^(General|(Tab|Password|Website|Extension)s|AutoFill|Se(arch|curity)|Privacy|Advance)$" manage=off
yabai -m rule --add label="System Preferences" app="^System Preferences$" title=".*" manage=off
yabai -m rule --add label="About This Mac" app="System Information" title="About This Mac" manage=off
yabai -m rule --add app="^iTerm$" title="Preferences" manage=off
set +x
echo "yabai configuration loaded.."
'';
};
environment.systemPackages = [pkgs.yabai];
}