{ config, lib, pkgs, ... }: { imports = [ ./hyprpaper.nix ]; wayland.windowManager.hyprland = { enable = true; 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:.*" ]; bind = [ "SHIFT_$mod, Q, killactive" "SHIFT_$mod, E, exit" "$mod, D, exec, $menu" "$mod, Return, exec, $terminal" "$mod, H, movefocus, l" "$mod, L, movefocus, r" "$mod, K, movefocus, u" "$mod, J, movefocus, d" "SHIFT_$mod, H, swapwindow, l" "SHIFT_$mod, L, swapwindow, r" "SHIFT_$mod, K, swapwindow, u" "SHIFT_$mod, J, swapwindow, d" "$mod, M, fullscreen, 0" ] ++ ( # 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}, movetoworkspace, ${toString (x + 1)}" ] ) 10) ); }; }; }