nixfiles/darwin/gui.nix

119 lines
3.8 KiB
Nix

{ config, pkgs, lib, ... }: with lib; {
services = {
yabai = {
enable = true;
enableScriptingAddition = true;
config = {
layout = "bsp";
auto_balance = "on";
split_ratio = "0.50";
window_placement = "second_child";
window_gap = 18;
top_padding = 36;
bottom_padding = 18;
left_padding = 18;
right_padding = 18;
window_shadow = "on";
window_border = "off";
window_border_width = 3;
window_opacity = "on";
window_opacity_duration = "0.1";
active_window_opacity = "1.0";
normal_window_opacity = "1.0";
mouse_modifier = "cmd";
mouse_action1 = "move";
mouse_action2 = "resize";
mouse_drop_action = "swap";
};
extraConfig = ''
yabai -m rule --add app='Firefox' manage=on
yabai -m rule --add app='System Preferences' manage=off
yabai -m rule --add app='Activity Monitor' manage=off
'';
};
spacebar = {
enable = true;
package = pkgs.spacebar;
config = {
position = "top";
height = 28;
title = "off";
spaces = "on";
power = "on";
clock = "on";
right_shell = "on";
padding_left = 20;
padding_right = 20;
spacing_left = 25;
spacing_right = 25;
text_font = ''"Menlo:16.0"'';
icon_font = ''"Menlo:16.0"'';
background_color = "0xff161616";
foreground_color = "0xffFFFFFF";
space_icon_color = "0xff3ddbd9";
power_icon_strip = " ";
space_icon_strip = " ";
spaces_for_all_displays = "on";
display_separator = "on";
display_separator_icon = "|";
clock_format = ''"%d/%m/%y %R"'';
right_shell_icon = " ";
right_shell_command = "whoami";
};
};
skhd = {
enable = true;
package = pkgs.skhd;
skhdConfig = ''
# open terminal
cmd - return : wezterm
# focus window
lalt - h : yabai -m window --focus west
lalt - j : yabai -m window --focus south
lalt - k : yabai -m window --focus north
lalt - l : yabai -m window --focus east
# swap managed window
shift + lalt - h : yabai -m window --swap west
shift + lalt - l : yabai -m window --swap east
shift + lalt - j : yabai -m window --swap south
shift + lalt - k : yabai -m window --swap north
# focus spaces
alt - x : yabai -m space --focus recent
alt - 1 : yabai -m space --focus 1
alt - 2 : yabai -m space --focus 2
alt - 3 : yabai -m space --focus 3
alt - 4 : yabai -m space --focus 4
alt - 5 : yabai -m space --focus 5
alt - 6 : yabai -m space --focus 6
alt - 7 : yabai -m space --focus 7
alt - 8 : yabai -m space --focus 8
# focus on next/prev space
alt + ctrl - q : yabai -m space --focus prev
alt + ctrl - e : yabai -m space --focus next
# send window to desktop
shift + alt - x : yabai -m window --space recent
shift + alt - 1 : yabai -m window --space 1
shift + alt - 2 : yabai -m window --space 2
shift + alt - 3 : yabai -m window --space 3
shift + alt - 4 : yabai -m window --space 4
shift + alt - 5 : yabai -m window --space 5
shift + alt - 6 : yabai -m window --space 6
shift + alt - 7 : yabai -m window --space 7
shift + alt - 8 : yabai -m window --space 8
# float / unfloat window and center on screen
lalt - t : yabai -m window --toggle float;\
yabai -m window --grid 4:4:1:1:2:2
# toggle window zoom
lalt - d : yabai -m window --toggle zoom-parent
'';
};
};
}