{ inputs, pkgs, lib, config, ... }: { options.hyprland.enable = lib.mkEnableOption "Hyprland"; config = { home.packages = with pkgs; [ cliphist dunst # hyprlock hyprpaper rofi-wayland slurp swww waybar wl-clipboard catppuccin-cursors.macchiatoLavender bibata-cursors # For potentially fixing some issues libsForQt5.qt5.qtwayland libsForQt5.qt5ct ]; wayland.windowManager.hyprland = { enable = true; settings = { "$mainMod" = "SUPER"; "$shiftMainMod" = "SUPER_SHIFT"; "$term" = "kitty"; # monitors "$mon_top" = "desc:BNQ G2420HDBL T2B04424SL000"; "$mon_left" = "desc:Samsung Electric Company LS27A600U HNMT502389"; "$mon_center" = "desc:Acer Technologies XB271HU #ASPVEKfgZ8Dd"; "$mon_right" = "desc:Samsung Electric Company LS27A600U HNMT502390"; monitor = [ "$mon_top,1920x1080@60,2560x0,1" # top T2B04424SL000 "$mon_left,2560x1440@75,0x1080,1" # left "$mon_center,2560x1440@120,2560x1080,1" # main #ASPVEKfgZ8Dd "$mon_right,2560x1440@75,5120x1080,1" # right ]; input = { kb_layout = "no"; follow_mouse = 1; }; env = [ "LIBVA_DRIVER_NAME,nvidia" "XDG_SESSION_TYPE,wayland" "GBM_BACKEND,nvidia-drm" "__GLX_VENDOR_LIBRARY_NAME,nvidia" "WLR_NO_HARDWARE_CURSORS,1" ]; decoration = { rounding = 0; drop_shadow = true; shadow_range = 4; shadow_render_power = 3; blur = { enabled = true; size = 3; passes = 1; xray = true; }; }; general = { gaps_in = 4; gaps_out = 10; border_size = 2; layout = "dwindle"; }; animations = { enabled = true; bezier = "myBezier, 0.05, 0.9, 0.1, 1.05"; animation = [ "windows, 1, 7, myBezier" "windowsOut, 1, 7, default, popin 80%" "border, 1, 10, default" "borderangle, 1, 8, default" "fade, 1, 7, default" "workspaces, 1, 6, default" ]; }; dwindle = { pseudotile = true; preserve_split = true; }; master.new_is_master = true; misc.force_default_wallpaper = -1; windowrulev2 = [ "opacity 0.95 override 0.7 override,class:^(Alacritty)$" "opacity 0.95 override 0.7 override,class:^(kitty)$" ]; workspace = [ "name:mumble, monitor:$mon_top, persistent:true, default:true" "name:left, monitor:$mon_left, persistent:true, default:true" "name:right, monitor:$mon_right, persistent:true, default:true" "name:main 1, monitor:$mon_center, persistent:true, default:true" "name:main 2, monitor:$mon_center, persistent:true, default:false" ]; bindm = [ "ALT,mouse:272,movewindow" ]; bindr = [ # mumble ptt release # ",code:202,exec,mumble rpc stoptalking" # ",code:202,exec,pamixer --source 63 -m" ",code:202,exec,pamixer --default-source -m" ]; bind = [ # term "$mainMod,Return,exec,$term" # rofi "$mainMod,D,exec,rofi-launcher" "$mainMod,P,exec,rofi-rbw" # hyprland "$mainMod,Q,killactive," "CTRLALT,Delete,exit," "$mainMod,Space,togglefloating," "$mainMod,F,fullscreen," # focus "$mainMod,l,movefocus,l" "$mainMod,h,movefocus,r" "$mainMod,k,movefocus,u" "$mainMod,j,movefocus,d" # move "$mainMod,h,movewindow,l" "$mainMod,l,movewindow,r" "$mainMod,k,movewindow,u" "$mainMod,j,movewindow,d" # Force opacity "$shiftMainMod,o,exec, hl-no-opacity" # mumble ptt click # ",code:202,exec,mumble rpc starttalking" ",code:202,exec,pamixer --default-source -u" ] ++ (builtins.concatLists (builtins.genList (x: let ws = let c = (x + 1) / 10; in builtins.toString (x + 1 - (c * 10)); in [ "$mainMod, ${ws}, workspace, ${toString (x + 1)}" ]) 10)); exec-once = [ "waybar" "hyprpaper & sleep 2 && randomwp" "easyeffects --gapplication-service" # "dunst" ]; }; }; }; }