133 lines
4.1 KiB
Nix
133 lines
4.1 KiB
Nix
{ mainMod }:
|
|
{
|
|
osConfig,
|
|
config,
|
|
pkgs,
|
|
helper,
|
|
...
|
|
}:
|
|
with builtins;
|
|
let
|
|
inherit (helper) getMonitors;
|
|
inherit (osConfig.networking) hostName;
|
|
monitors = getMonitors hostName config;
|
|
|
|
nvidia-offload-enabled = osConfig.hardware.nvidia.prime.offload.enableOffloadCmd;
|
|
|
|
notransTag = "notrans";
|
|
|
|
browser-bin = "$BROWSER";
|
|
prefix = if nvidia-offload-enabled then "nvidia-offload " else "";
|
|
browser = "${prefix}${browser-bin}";
|
|
terminal = "${prefix}ghostty";
|
|
filemanager = "${terminal} -e yazi";
|
|
mailClient = "${prefix}thunderbird";
|
|
|
|
screenshotFolder = "--output-folder ~/Pictures/Screenshots";
|
|
clipboardOnly = "${screenshotFolder}";
|
|
|
|
gamingWorkspace = 7;
|
|
|
|
toggleWlogout = pkgs.writeShellScript "toggle" ''
|
|
if ${pkgs.busybox}/bin/pgrep wlogout > /dev/null; then
|
|
${pkgs.busybox}/bin/pkill wlogout
|
|
else
|
|
${config.programs.wlogout.package}/bin/wlogout --protocol layer-shell
|
|
fi
|
|
'';
|
|
|
|
rofiWall = import ../../scripts/rofiwall.nix { inherit config pkgs; };
|
|
|
|
rbwSelector = import ../../scripts/rbwSelector.nix { inherit pkgs; };
|
|
|
|
scrollStep =
|
|
let
|
|
monitorsNum = length monitors;
|
|
in
|
|
toString (if (monitorsNum == 0) then 1 else monitorsNum);
|
|
in
|
|
{
|
|
wayland.windowManager.hyprland.settings.bind = [
|
|
''${mainMod}, F, exec, ${browser}''
|
|
''${mainMod}, RETURN, exec, ${terminal}''
|
|
''CTRL ALT, T, exec, ${terminal}''
|
|
''${mainMod}, Q, killactive, ''
|
|
|
|
''${mainMod} SHIFT, M, exec, ${toggleWlogout}''
|
|
''${mainMod}, M, exec, ${mailClient}''
|
|
''${mainMod}, E, exec, ${filemanager}''
|
|
''${mainMod}, V, togglefloating, ''
|
|
''ALT, SPACE, exec, rofi -config ~/.config/rofi/apps.rasi -show drun''
|
|
''${mainMod}, W, exec, ${rofiWall}''
|
|
''${mainMod}, P, pseudo, # dwindle''
|
|
''${mainMod}, S, togglesplit, # dwindle''
|
|
''CTRL ${mainMod} SHIFT, L, exec, hyprlock''
|
|
|
|
# Toggle transparent
|
|
''${mainMod}, n, tagwindow, ${notransTag}''
|
|
|
|
# Bitwarden Selector
|
|
''CTRL ${mainMod}, P, exec, ${rbwSelector}''
|
|
|
|
# Screenshot
|
|
''${mainMod} SHIFT, s, exec, hyprshot -m region ${clipboardOnly}''
|
|
''CTRL SHIFT, s, exec, hyprshot -m window ${clipboardOnly}''
|
|
''CTRL SHIFT ${mainMod}, s, exec, hyprshot -m output ${clipboardOnly}''
|
|
''CTRL ALT, s, exec, hyprshot -m active -m window ${clipboardOnly}''
|
|
|
|
''${mainMod}, PERIOD, exec, rofi -modi emoji -show emoji''
|
|
''CTRL ${mainMod}, c, exec, rofi -show calc -modi calc -no-show-match -no-sort''
|
|
''${mainMod}, X, exec, sleep 0.1 && swaync-client -t -sw''
|
|
''${mainMod} SHIFT, C, centerwindow''
|
|
'',F11, fullscreen''
|
|
''${mainMod}, C, exec, code''
|
|
|
|
# Color Picker
|
|
''${mainMod} SHIFT, P, exec, hyprpicker -f hex -a -z''
|
|
|
|
# Cycle windows
|
|
''ALT, TAB, cyclenext''
|
|
''ALT, TAB, bringactivetotop''
|
|
|
|
''${mainMod}, h, movefocus, l''
|
|
''${mainMod}, l, movefocus, r''
|
|
''${mainMod}, k, movefocus, u''
|
|
''${mainMod}, j, movefocus, d''
|
|
|
|
''${mainMod}, mouse_down, workspace, e-${scrollStep}''
|
|
''${mainMod}, mouse_up, workspace, e+${scrollStep}''
|
|
|
|
''${mainMod} SHIFT, l, movewindow, r''
|
|
''${mainMod} SHIFT, h, movewindow, l''
|
|
''${mainMod} SHIFT, k, movewindow, u''
|
|
''${mainMod} SHIFT, j, movewindow, d''
|
|
|
|
# Media
|
|
'',XF86AudioPrev, exec, playerctl previous''
|
|
'',XF86AudioNext, exec, playerctl next''
|
|
''${mainMod} CTRL, COMMA, exec, playerctl previous''
|
|
''${mainMod} CTRL, PERIOD, exec, playerctl next''
|
|
'',XF86AudioPlay, exec, playerctl play-pause''
|
|
'',XF86AudioStop, exec, playerctl stop''
|
|
'',XF86AudioMute, exec, wpctl set-mute @DEFAULT_SINK@ toggle''
|
|
|
|
''${mainMod}, G, workspace, ${toString gamingWorkspace}''
|
|
''${mainMod} SHIFT, G, movetoworkspace, ${toString gamingWorkspace}''
|
|
]
|
|
++ (
|
|
# workspaces
|
|
# binds $mainMod + [shift +] {1..9} to [move to] workspace {1..9}
|
|
builtins.concatLists (
|
|
builtins.genList (
|
|
i:
|
|
let
|
|
ws = i + 1;
|
|
in
|
|
[
|
|
"${mainMod}, code:1${toString i}, workspace, ${toString ws}"
|
|
"${mainMod} SHIFT, code:1${toString i}, movetoworkspace, ${toString ws}"
|
|
]
|
|
) 9
|
|
)
|
|
);
|
|
}
|