{ lib, config, pkgs, ... }: let # workspaces workspaces = builtins.concatLists ( builtins.genList ( i: let ws = i + 1; in [ "$mod, code:1${toString i}, workspace, ${toString ws}" "$mod SHIFT, code:1${toString i}, movetoWorkspace, ${toString ws}" ] ) 10 ); in { wayland.windowManager.hyprland.settings = { "$mod" = "SUPER"; bindm = [ "$mod, mouse:272, movewindow" "$mod, mouse:273, resizewindow" ]; bind = [ # compositor commands "$mod SHIFT, E, exec, pkill Hyprland" "$mod, W, killactive," "$mod, Q, killactive," "$mod, F, fullscreen," #"$mod, G, togglegroup," # "$mod SHIFT, N, changegroupactive, f" # "$mod SHIFT, P, changegroupactive, b" #"$mod, R, togglesplit," "$mod, T, togglefloating," #"$mod, P, pseudo," #"$mod ALT, ,resizeactive," "$mod, left, movefocus, l" "$mod, right, movefocus, r" "$mod, up, movefocus, u" "$mod, down, movefocus, d" "$mod, h, movefocus, l" "$mod, l, movefocus, r" "$mod, k, movefocus, u" "$mod, j, movefocus, d" "$mod SHIFT, left, movewindow, l" "$mod SHIFT, right, movewindow, r" "$mod SHIFT, up, movewindow, u" "$mod SHIFT, down, movewindow, d" "$mod SHIFT, h, movewindow, l" "$mod SHIFT, l, movewindow, r" "$mod SHIFT, k, movewindow, u" "$mod SHIFT, j, movewindow, d" "$mod CTRL, left, resizeactive, -25 0" "$mod CTRL, down, resizeactive, 0 25" "$mod CTRL, up, resizeactive, 0 -25" "$mod CTRL, right, resizeactive, 25 0" "$mod CTRL, h, resizeactive, -25 0" "$mod CTRL, j, resizeactive, 0 25" "$mod CTRL, k, resizeactive, 0 -25" "$mod CTRL, l, resizeactive, 25 0" "$mod, a, togglespecialworkspace, term" "$mod, m, togglespecialworkspace, music" "$mod, p, togglespecialworkspace, password" "$mod SHIFT, a, movetoworkspace, special:term" "$mod SHIFT, m, movetoworkspace, special:music" "$mod SHIFT, p, movetoworkspace, special:password" "$mod, g, layoutmsg, swapwithmaster" "$mod, return, exec, ghostty" "$mod, b, exec, librewolf" "$mod, space, exec, pkill rofi || rofi -show drun" "$mod, o, exec, pkill hyprpicker || hyprpicker -ar" "$mod SHIFT, s, exec, pkill slurp || grim -g \"$(slurp)\" - | wl-copy" ", PRINT, exec, grim - | wl-copy" "SHIFT, PRINT, exec, pkill slurp swappy || grim -g \"$(slurp)\" - | swappy -f -" ", XF86Explorer, exec, hyprlock" ", XF86AudioRaiseVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%+ && notify-send 'Volume Up'" ", XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%- && notify-send 'Volume Down'" ", XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle && notify-send 'Mute Toggled'" ", XF86AudioNext, exec, playerctl next && notify-send 'Next Song'" ", XF86AudioPrev, exec, playerctl previous && notify-send 'Previous Song'" ", XF86AudioPlay, exec, playerctl play-pause && notify-send 'Pause/Play Toggled'" ", XF86AudioStop, exec, playerctl stop && notify-send 'Music Stopped'" "$mod, F1, exec, hyprlock" "$mod, F11, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%+ && notify-send 'Volume Up'" "$mod, F10, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%- && notify-send 'Volume Down'" "$mod, F9, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle && notify-send 'Mute Toggled'" "$mod, F6, exec, playerctl next && notify-send 'Next Song'" "$mod, F5, exec, playerctl previous && notify-send 'Previous Song'" "$mod, F7, exec, playerctl play-pause && notify-send 'Pause/Play Toggled'" "$mod, F8, exec, playerctl stop && notify-send 'Music Stopped'" ] ++ workspaces; }; }