2024-08-28 13:52:43 +02:00
|
|
|
{
|
2025-03-31 15:47:54 +02:00
|
|
|
lib,
|
2024-08-28 13:52:43 +02:00
|
|
|
pkgs,
|
2024-08-28 14:17:38 +02:00
|
|
|
...
|
2024-08-28 13:52:43 +02:00
|
|
|
}: let
|
|
|
|
inherit (builtins) map genList toString;
|
2025-04-02 15:31:18 +02:00
|
|
|
inherit (lib.meta) getExe getExe';
|
2024-08-28 13:52:43 +02:00
|
|
|
in {
|
2024-11-04 12:35:21 +01:00
|
|
|
programs.hyprland.settings = {
|
2024-08-28 13:52:43 +02:00
|
|
|
# Keybinds
|
|
|
|
bind =
|
|
|
|
# workspaces
|
|
|
|
# split-workspace is because of the split-workspace plugin
|
|
|
|
map (
|
|
|
|
i: let
|
|
|
|
mod = a: b: a - (b * (a / b));
|
|
|
|
key = toString (mod i 10);
|
|
|
|
workspace = toString i;
|
2024-10-18 18:50:55 +02:00
|
|
|
in "$mainMod, ${key}, split:workspace, ${workspace}"
|
2024-08-28 13:52:43 +02:00
|
|
|
) (genList (i: i + 1) 10)
|
|
|
|
# split-movetoworkspacesilent
|
|
|
|
++ map (
|
|
|
|
i: let
|
|
|
|
mod = a: b: a - (b * (a / b));
|
|
|
|
key = toString (mod i 10);
|
|
|
|
workspace = toString i;
|
2024-10-18 18:50:55 +02:00
|
|
|
in "$mainMod SHIFT, ${key}, split:movetoworkspacesilent, ${workspace}"
|
2024-08-28 13:52:43 +02:00
|
|
|
) (genList (i: i + 1) 10)
|
|
|
|
++ [
|
2024-11-01 14:00:34 +01:00
|
|
|
"$mainMod, RETURN, exec, foot"
|
2024-10-06 12:43:44 +02:00
|
|
|
"$mainMod, Q, killactive"
|
2024-08-28 13:52:43 +02:00
|
|
|
"$mainMod, F, fullscreen, 0"
|
2025-03-31 15:47:54 +02:00
|
|
|
"$mainMod, D, exec, ${pkgs.procps}/bin/pkill fuzzel || ${getExe pkgs.fuzzel}"
|
2024-08-28 13:52:43 +02:00
|
|
|
"$mainMod, SPACE, togglefloating, active"
|
2025-03-31 15:47:54 +02:00
|
|
|
"$mainMod ALT, L, exec, ${getExe pkgs.swaylock}"
|
2024-08-28 13:52:43 +02:00
|
|
|
|
|
|
|
# Screenshotting
|
2024-10-08 18:23:35 +02:00
|
|
|
"$mainMod, S, exec, ${pkgs.grimblast}/bin/grimblast copy area" # only copy
|
|
|
|
"$mainMod SHIFT, S, exec, ${pkgs.grimblast}/bin/grimblast save area - | ${pkgs.satty}/bin/satty -f -" # edit with satty
|
2024-08-28 13:52:43 +02:00
|
|
|
|
|
|
|
# File manager
|
|
|
|
"$mainMod, E, exec, ${pkgs.xfce.thunar}/bin/thunar"
|
|
|
|
|
|
|
|
# Toggle the three different special workspaces.
|
|
|
|
"$mainMod, N, togglespecialworkspace, nixos"
|
|
|
|
"$mainMod, X, togglespecialworkspace, keepassxc"
|
2024-09-22 19:21:53 +02:00
|
|
|
"$mainMod, V, togglespecialworkspace, audio"
|
2024-08-28 13:52:43 +02:00
|
|
|
|
|
|
|
# Reload hyprland
|
2025-04-09 15:31:18 +02:00
|
|
|
"$mainMod, R, exec, ${getExe' pkgs.hyprland "hyprctl"} reload"
|
2024-08-28 13:52:43 +02:00
|
|
|
|
|
|
|
# Restart waybar
|
2025-04-09 15:31:18 +02:00
|
|
|
"$mainMod CONTROL, B, exec, ${pkgs.procps}/bin/pkill waybar || ${getExe pkgs.waybar}"
|
2024-08-28 13:52:43 +02:00
|
|
|
];
|
|
|
|
|
|
|
|
binde = [
|
|
|
|
# window focus
|
2025-03-26 19:15:12 +01:00
|
|
|
"$mainMod, H, movefocus, l"
|
|
|
|
"$mainMod, J, movefocus, d"
|
|
|
|
"$mainMod, K, movefocus, u"
|
|
|
|
"$mainMod, L, movefocus, r"
|
2024-10-20 00:40:53 +02:00
|
|
|
|
|
|
|
# Move Windows
|
2025-03-26 19:15:12 +01:00
|
|
|
"$mainMod SHIFT, H, movewindow, l"
|
|
|
|
"$mainMod SHIFT, J, movewindow, d"
|
|
|
|
"$mainMod SHIFT, K, movewindow, u"
|
|
|
|
"$mainMod SHIFT, L, movewindow, r"
|
2024-08-28 13:52:43 +02:00
|
|
|
];
|
|
|
|
|
|
|
|
# Media controls
|
|
|
|
bindl = let
|
2025-04-02 15:31:18 +02:00
|
|
|
volumectl = getExe' pkgs.avizo "volumectl";
|
|
|
|
playerctl = getExe pkgs.playerctl;
|
|
|
|
play-pause = "${playerctl} play-pause";
|
|
|
|
stop = "${playerctl} stop";
|
|
|
|
prev = "${playerctl} previous";
|
|
|
|
next = "${playerctl} next";
|
|
|
|
toggle-mute = "${volumectl} toggle-mute";
|
|
|
|
toggle-mic-mute = "${volumectl} toggle-mute";
|
2024-08-28 13:52:43 +02:00
|
|
|
in [
|
|
|
|
", XF86AudioMedia, exec, ${play-pause}"
|
|
|
|
", XF86AudioPlay, exec, ${play-pause}"
|
|
|
|
", XF86AudioStop, exec, ${stop}"
|
|
|
|
", XF86AudioPrev, exec, ${prev}"
|
|
|
|
", XF86AudioNext, exec, ${next}"
|
|
|
|
", XF86AudioMute, exec, ${toggle-mute}"
|
2025-04-02 15:31:18 +02:00
|
|
|
", XF86AudioMicMute, exec, ${toggle-mic-mute}"
|
2024-08-28 13:52:43 +02:00
|
|
|
];
|
|
|
|
|
|
|
|
# locked + repeat
|
|
|
|
bindle = let
|
2025-04-02 15:31:18 +02:00
|
|
|
volumectl = getExe' pkgs.avizo "volumectl";
|
|
|
|
lightctl = getExe' pkgs.avizo "lightctl";
|
|
|
|
volume_up = "${volumectl} -u up";
|
|
|
|
volume_down = "${volumectl} -u down";
|
|
|
|
brightness_up = "${lightctl} up";
|
|
|
|
brightness_down = "${lightctl} down";
|
2024-08-28 13:52:43 +02:00
|
|
|
in [
|
|
|
|
", XF86AudioRaiseVolume, exec, ${volume_up}"
|
|
|
|
", XF86AudioLowerVolume, exec, ${volume_down}"
|
|
|
|
", XF86MonBrightnessUp, exec, ${brightness_up}"
|
|
|
|
", XF86MonBrightnessDown, exec, ${brightness_down}"
|
|
|
|
];
|
|
|
|
|
|
|
|
# Mouse settings
|
|
|
|
bindm = [
|
|
|
|
"$mainMod, mouse:272, movewindow"
|
|
|
|
"$mainMod, mouse:273, resizewindow"
|
|
|
|
];
|
|
|
|
|
|
|
|
# Some more movement-related settings
|
|
|
|
binds = {
|
|
|
|
pass_mouse_when_bound = false;
|
|
|
|
movefocus_cycles_fullscreen = false;
|
|
|
|
};
|
|
|
|
};
|
|
|
|
}
|