NixOS-Vista/nixosVista/homeManager/hyprland/keybindings.nix
2026-03-02 15:44:30 +01:00

174 lines
5.4 KiB
Nix

{
config,
lib,
nixosVista,
...
}: let
cfg = nixosVista.hyprland.keybindings;
############################################################
# Presets
############################################################
# I wanna adjust the Main Keybinds still a lil but anyone can easily build their own
defaultPreset = [
# Main modifier
#"$mainMod = SUPER"
# Switch focus Arrow keys
"bind = $mainMod, left, movefocus, l"
"bind = $mainMod, right, movefocus, r"
"bind = $mainMod, up, movefocus, u"
"bind = $mainMod, down, movefocus, d"
# Terminal
"bind = $mainMod, Enter, exec, $terminal"
"bind = $mainMod, Return, exec, $terminal"
# Kill active
"bind = $mainMod, Q, killactive"
# Screenshot
"bind = $mainMod SHIFT, S, exec, hyprshot --mode region --output-folder /tmp"
# File manager
"bind = $mainMod, E, exec, $fileManager"
# Toggle floating
"bind = $mainMod SHIFT, SPACE, togglefloating"
# Fullscreen
"bind = $mainMod, F, fullscreen"
# Launcher
"bind = $mainMod, D, exec, $menu"
# lock
"bind = $mainMod, L, exec, hyprlock"
# Workspaces
"bind = $mainMod, 1, workspace, 1"
"bind = $mainMod, 2, workspace, 2"
"bind = $mainMod, 3, workspace, 3"
"bind = $mainMod, 4, workspace, 4"
"bind = $mainMod, 5, workspace, 5"
"bind = $mainMod, 6, workspace, 6"
"bind = $mainMod, 7, workspace, 7"
"bind = $mainMod, 8, workspace, 8"
"bind = $mainMod, 9, workspace, 9"
"bind = $mainMod, 0, workspace, 10"
# Move to workspace
"bind = $mainMod SHIFT, 1, movetoworkspace, 1"
"bind = $mainMod SHIFT, 2, movetoworkspace, 2"
"bind = $mainMod SHIFT, 3, movetoworkspace, 3"
"bind = $mainMod SHIFT, 4, movetoworkspace, 4"
"bind = $mainMod SHIFT, 5, movetoworkspace, 5"
"bind = $mainMod SHIFT, 6, movetoworkspace, 6"
"bind = $mainMod SHIFT, 7, movetoworkspace, 7"
"bind = $mainMod SHIFT, 8, movetoworkspace, 8"
"bind = $mainMod SHIFT, 9, movetoworkspace, 9"
"bind = $mainMod SHIFT, 0, movetoworkspace, 10"
# Mouse
"bindm = $mainMod, mouse:272, movewindow"
"bindm = $mainMod, mouse:273, resizewindow"
# Volume / brightness
"bindel = ,XF86AudioRaiseVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%+"
"bindel = ,XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-"
"bindel = ,XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle"
"bindel = ,XF86AudioMicMute, exec, wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle"
"bindel = ,XF86MonBrightnessUp, exec, brightnessctl s 10%+"
"bindel = ,XF86MonBrightnessDown, exec, brightnessctl s 10%-"
];
diinkii = [
# Main modifier
#"$mainMod = SUPER"
# Terminal
"bind = $mainMod, Return, exec, $terminal"
# Kill active
"bind = $mainMod, Q, killactive"
# Screenshot
"bind = $mainMod SHIFT, S, exec, hyprshot --mode region --output-folder /tmp"
# File manager
"bind = $mainMod, E, exec, $fileManager"
# Toggle floating
"bind = $mainMod SHIFT, SPACE, togglefloating"
# Fullscreen
"bind = $mainMod, F, fullscreen"
# Launcher
"bind = $mainMod, D, exec, $menu"
# Workspaces
"bind = $mainMod, 1, workspace, 1"
"bind = $mainMod, 2, workspace, 2"
"bind = $mainMod, 3, workspace, 3"
"bind = $mainMod, 4, workspace, 4"
"bind = $mainMod, 5, workspace, 5"
"bind = $mainMod, 6, workspace, 6"
"bind = $mainMod, 7, workspace, 7"
"bind = $mainMod, 8, workspace, 8"
"bind = $mainMod, 9, workspace, 9"
"bind = $mainMod, 0, workspace, 10"
# Move to workspace
"bind = $mainMod SHIFT, 1, movetoworkspace, 1"
"bind = $mainMod SHIFT, 2, movetoworkspace, 2"
"bind = $mainMod SHIFT, 3, movetoworkspace, 3"
"bind = $mainMod SHIFT, 4, movetoworkspace, 4"
"bind = $mainMod SHIFT, 5, movetoworkspace, 5"
"bind = $mainMod SHIFT, 6, movetoworkspace, 6"
"bind = $mainMod SHIFT, 7, movetoworkspace, 7"
"bind = $mainMod SHIFT, 8, movetoworkspace, 8"
"bind = $mainMod SHIFT, 9, movetoworkspace, 9"
"bind = $mainMod SHIFT, 0, movetoworkspace, 10"
# Mouse
"bindm = $mainMod, mouse:272, movewindow"
"bindm = $mainMod, mouse:273, resizewindow"
# Volume / brightness
"bindel = ,XF86AudioRaiseVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%+"
"bindel = ,XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-"
"bindel = ,XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle"
"bindel = ,XF86AudioMicMute, exec, wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle"
"bindel = ,XF86MonBrightnessUp, exec, brightnessctl s 10%+"
"bindel = ,XF86MonBrightnessDown, exec, brightnessctl s 10%-"
];
minimalPreset = [
"$mainMod = SUPER"
"bind = $mainMod, Return, exec, $terminal"
"bind = $mainMod, Q, killactive"
];
presetBinds =
if cfg.preset == "default"
then defaultPreset
else if cfg.preset == "minimal"
then minimalPreset
else [];
finalBinds = presetBinds ++ cfg.extra;
in {
config = lib.mkIf (nixosVista.enable && finalBinds != []) {
#warnings = [">>> HYPRLAND KEYBINDS MODULE ACTIVE <<<"];
nixosVista.hyprland.fragments.keybinds = ''
############################################################
# Keybindings
############################################################
${lib.concatStringsSep "\n" finalBinds}
'';
};
}