{ config, flakePath, lib, pkgs, ... }: let inherit (pkgs.stdenv.hostPlatform) isDarwin; in { xdg.configFile = lib.mkIf isDarwin { "sketchybar" = { source = config.lib.file.mkOutOfStoreSymlink "${flakePath}/home/apps/sketchybar"; recursive = true; }; "yabai/yabairc" = { text = let rule = "yabai -m rule --add"; ignored = app: builtins.concatStringsSep "\n" (map (e: ''${rule} app="${e}" manage=off sticky=off layer=above border=off'') app); unmanaged = app: builtins.concatStringsSep "\n" (map (e: ''${rule} app="${e}" manage=off'') app); in '' #!/usr/bin/env sh yabai -m signal --add event=dock_did_restart action="sudo yabai --load-sa" sudo yabai --load-sa yabai -m config \ auto_balance off \ focus_follows_mouse off \ layout bsp \ mouse_drop_action swap \ mouse_follows_focus off \ window_animation_duration 0.0 \ window_border on \ window_border_blur on \ window_border_width 2 \ window_gap 5 \ left_padding 5 \ right_padding 5 \ top_padding 5 \ bottom_padding 5 \ window_origin_display default \ window_placement second_child \ window_shadow float \ active_window_border_color 0xfff5c2e7 \ normal_window_border_color 0xffcba6f7 \ external_bar all:32:0 # auto-inject scripting additions yabai -m signal --add event=dock_did_restart action="sudo yabai --load-sa" sudo yabai --load-sa ${ignored ["JetBrains Toolbox" "Mullvad VPN" "Sip" "iStat Menus"]} ${unmanaged ["GOG Galaxy" "Steam" "System Settings"]} # etc. ${rule} manage=off border=off app="CleanShot" ${rule} manage=off sticky=on app="OBS Studio" ''; executable = true; }; "skhd/skhdrc" = { text = '' #!/usr/bin/env sh # WORKS WITH SIP ENABLED: # focus window cmd + ctrl - h : yabai -m window --focus west cmd + ctrl - j : yabai -m window --focus south cmd + ctrl - k : yabai -m window --focus north cmd + ctrl - l : yabai -m window --focus east # move window cmd + shift - h : yabai -m window --warp west cmd + shift - j : yabai -m window --warp south cmd + shift - k : yabai -m window --warp north cmd + shift - l : yabai -m window --warp east # toggle sticky/floating cmd + shift - s: yabai -m window --toggle sticky --toggle float --toggle topmost cmd + shift - d: yabai -m window --toggle float # rotate cmd + ctrl - e : yabai -m space --balance cmd + ctrl - r : yabai -m space --rotate 270 # open terminal cmd + shift - return : open -na "''${HOME}/Applications/Home Manager Apps/WezTerm.app" # restart yabai cmd + alt - r : brew services restart yabai # ONLY WORKS WITH SIP DISABLED: # fast focus space left/right ctrl - left : yabai -m space --focus prev ctrl - right : yabai -m space --focus next # switch to space cmd + ctrl - 1 : yabai -m space --focus 1 cmd + ctrl - 2 : yabai -m space --focus 2 cmd + ctrl - 3 : yabai -m space --focus 3 cmd + ctrl - 4 : yabai -m space --focus 4 cmd + ctrl - 5 : yabai -m space --focus 5 cmd + ctrl - 6 : yabai -m space --focus 6 cmd + ctrl - 7 : yabai -m space --focus 7 cmd + ctrl - 8 : yabai -m space --focus 8 cmd + ctrl - 9 : yabai -m space --focus 9 cmd + ctrl - 0 : yabai -m space --focus 10 # send window to desktop and follow focus cmd + shift - 1 : yabai -m window --space 1; yabai -m space --focus 1 cmd + shift - 2 : yabai -m window --space 2; yabai -m space --focus 2 cmd + shift - 3 : yabai -m window --space 3; yabai -m space --focus 3 cmd + shift - 4 : yabai -m window --space 4; yabai -m space --focus 4 cmd + shift - 5 : yabai -m window --space 5; yabai -m space --focus 5 cmd + shift - 6 : yabai -m window --space 6; yabai -m space --focus 6 cmd + shift - 7 : yabai -m window --space 7; yabai -m space --focus 7 cmd + shift - 8 : yabai -m window --space 8; yabai -m space --focus 8 cmd + shift - 9 : yabai -m window --space 9; yabai -m space --focus 9 cmd + shift - 0 : yabai -m window --space 10; yabai -m space --focus 10 ''; executable = true; }; }; }