{ hyprland, hy3, ... }: { imports = [ ./hyprpaper.nix ]; wayland.windowManager.hyprland = { enable = true; package = hyprland.packages.x86_64-linux.hyprland; plugins = [ hy3.packages.x86_64-linux.hy3 ]; settings = { "$mod" = "SUPER"; "$terminal" = "kitty"; "$fileManager" = "dolphin"; "$menu" = "wofi --show drun"; exec-once = [ "waybar" "dunst" ]; env = [ "XCURSOR_SIZE,24" "HYPRCURSOR_SIZE,24" ]; xwayland = { force_zero_scaling = true; }; input = { kb_layout = "us"; kb_options = "caps:escape"; follow_mouse = 1; touchpad.natural_scroll = false; }; windowrulev2 = [ # I can guess, but I should figure out what this actually does "suppressevent maximize, class:.*" ]; general.layout = "hy3"; bind = [ "SHIFT_$mod, Q, killactive" "SHIFT_$mod, M, exit" "$mod, D, exec, $menu" "$mod, Return, exec, $terminal" "$mod, H, hy3:movefocus, l" "$mod, L, hy3:movefocus, r" "$mod, K, hy3:movefocus, u" "$mod, J, hy3:movefocus, d" "SHIFT_$mod, H, hy3:movewindow, l" "SHIFT_$mod, L, hy3:movewindow, r" "SHIFT_$mod, K, hy3:movewindow, u" "SHIFT_$mod, J, hy3:movewindow, d" "$mod, V, hy3:makegroup, opposite" "$mod, W, hy3:changegroup, toggletab" "$mod, A, hy3:changefocus, raise" "SHIFT_$mod, A, hy3:changefocus, lower" "$mod, M, fullscreen, 0" "$mod, E, hy3:expand, expand" "SHIFT_$mod, E, hy3:expand, base" "$mod, Q, hy3:warpcursor" ] ++ ( # workspaces # binds $mod + [shift +] {1..10} to [move to] workspace {1..10} builtins.concatLists (builtins.genList ( x: let ws = let c = (x + 1) / 10; in builtins.toString (x + 1 - (c * 10)); in [ "$mod, ${ws}, workspace, ${toString (x + 1)}" "$mod SHIFT, ${ws}, hy3:movetoworkspace, ${toString (x + 1)}" ] ) 10) ); bindm = [ "$mod, mouse:272, movewindow" "$mod, mouse:273, resizewindow" ]; }; }; }