let drawer = "nwg-drawer -fm nautilus -term kitty -mb 10 -mt 10 -ml 10 -mr 10 -pbuseicontheme -i Colloid-nord-dark"; in { wayland.windowManager.hyprland = { enable = true; xwayland.enable = true; systemd.enable = true; settings = { "$mod" = "SUPER"; # Mouse # mouse_[up|down] - scroll wheel # middle_mouse - 274 # thumb_up - 276 # thumb_down - 275 # l -> locked, will also work when an input inhibitor (e.g. a lockscreen) is active. # r -> release, will trigger on release of a key. # e -> repeat, will repeat when held. # n -> non-consuming, key/mouse events will be passed to the active window in addition to triggering the dispatcher. # m -> mouse, see below. # t -> transparent, cannot be shadowed by other binds. # i -> ignore mods, will ignore modifiers. # s -> separate, will arbitrarily combine keys between each mod/key, see [Keysym combos](#keysym-combos) above. # d -> has description, will allow you to write a description for your bind. # p -> bypasses the app's requests to inhibit keybinds. # https://wiki.hyprland.org/Configuring/Binds/ # https://wiki.hyprland.org/Configuring/Binds/#mouse-buttons bind = [ "$mod, Return, exec, kitty" "$mod, Q, killactive, " "$mod, M, exec, wlogout --protocol layer-shell" "$mod, E, exec, nautilus" "$mod, V, togglefloating, " "$mod, D, exec, ${drawer}" "$mod, P, pseudo, " # dwindle "$mod, S, togglesplit, " # dwindle "$mod SHIFT, Q, exec, hyprlock" ", PRINT, exec, hyprshot -m region --clipboard-only" "$mod,F,exec,hyprctl dispatch fullscreen active" "$mod SHIFT, E, exec, smile" "$mod, mouse:276, movecurrentworkspacetomonitor, DP-1" "$mod, mouse:275, movecurrentworkspacetomonitor, DP-2" # alt-tab between workspaces on active monitor "ALT, Tab, workspace, m+1" "ALT SHIFT, Tab, workspace, m-1" "$mod, h, movefocus, l" "$mod, l, movefocus, r" "$mod, k, movefocus, u" "$mod, j, movefocus, d" "$mod, 1, workspace, 1" "$mod, 2, workspace, 2" "$mod, 3, workspace, 3" "$mod, 4, workspace, 4" "$mod, 5, workspace, 5" "$mod, 6, workspace, 6" "$mod, 7, workspace, 7" "$mod, 8, workspace, 8" "$mod, 9, workspace, 9" "$mod, 0, workspace, 10" "$mod SHIFT, 1, movetoworkspace, 1" "$mod SHIFT, 2, movetoworkspace, 2" "$mod SHIFT, 3, movetoworkspace, 3" "$mod SHIFT, 4, movetoworkspace, 4" "$mod SHIFT, 5, movetoworkspace, 5" "$mod SHIFT, 6, movetoworkspace, 6" "$mod SHIFT, 7, movetoworkspace, 7" "$mod SHIFT, 8, movetoworkspace, 8" "$mod SHIFT, 9, movetoworkspace, 9" "$mod SHIFT, 0, movetoworkspace, discord" "$mod CTRL, l, resizeactive, 10 0" "$mod CTRL, h, resizeactive, -10 0" "$mod CTRL, k, resizeactive, 0 -10" "$mod CTRL, j, resizeactive, 0 10" "$mod SHIFT, l, movewindow, r" "$mod SHIFT, h, movewindow, l" "$mod SHIFT, k, movewindow, u" "$mod SHIFT, j, movewindow, d" "$mod, b, exec, firefox" ]; bindm = [ # Move/resize windows with mod + LMB/RMB and dragging "$mod, mouse:272, movewindow" "$mod, mouse:273, resizewindow" # middle mouse will grab a window, mod + middle mouse will close it "$mod SHIFT, mouse:274, movewindow" ]; bindel = [ ", XF86AudioRaiseVolume, exec, wpctl set-volume -l 1.5 @DEFAULT_AUDIO_SINK@ 5%+" ", XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-" ]; bindl = [ ", XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle" ", XF86AudioPlay, exec, playerctl play-pause" ", XF86AudioPrev, exec, playerctl previous" ", XF86AudioNext, exec, playerctl next" ]; monitor = [ "DP-1,3840x2160@240.00000,0x0,1" "DP-2,3840x2160@59.99700,3840x0,1" ]; general = { gaps_in = 5; gaps_out = 10; border_size = 1; "col.active_border" = "rgb(8aadf4) rgb(24273A) rgb(24273A) rgb(8aadf4) 45deg"; "col.inactive_border" = "rgb(24273A) rgb(24273A) rgb(24273A) rgb(24273A) 45deg"; layout = "dwindle"; allow_tearing = true; }; decoration = { rounding = 10; blur = { enabled = true; size = 2; passes = 2; new_optimizations = true; xray = false; }; drop_shadow = "yes"; shadow_range = 4; shadow_render_power = "3"; "col.shadow" = "rgba(1a1a1aee)"; }; animations = { enabled = "yes"; bezier = [ "overshot, 0.05, 0.9, 0.1, 1.05" "smoothOut, 0.36, 0, 0.66, -0.56" "smoothIn, 0.25, 1, 0.5, 1" ]; animation = [ "windows, 1, 5, overshot, slide" "windowsOut, 1, 4, smoothOut, slide" "windowsMove, 1, 4, default" "border, 1, 10, default" "fade, 1, 10, smoothIn" "fadeDim, 1, 10, smoothIn" "workspaces, 1, 6, default" ]; }; dwindle = { pseudotile = "yes"; preserve_split = "yes"; }; gestures = { workspace_swipe = "off"; }; misc = { force_default_wallpaper = 0; }; workspace = [ "name:firefox, monitor:DP-2, default:false, special, firefox" "name:discord, monitor:DP-2, default:true, special, vesktop, spotify" "name:steam, monitor:DP-1, default:false, special, steam" ]; windowrule = [ "float, file_progress" "float, confirm" "float, dialog" "float, download" "float, notification" "float, error" "float, splash" "float, confirmreset" "float, title:Open File" "float, title:branchdialog" "float, pavucontrol" "move onscreen cursor 0% 0%, pavucontrol" "float, file-roller" "fullscreen, wlogout" "float, title:wlogout" "fullscreen, title:wlogout" "idleinhibit stayfocused, mpv" ]; windowrulev2 = [ "float, title:^(Media viewer)$" "float, class:^(it.mijorus.smile)$,title:^(Smile)$" "float, class:^(.blueman-manager-wrapped)$,title:^(Bluetooth Devices)$" # Picture in picture windows # "float, class:pavucontrol,title:pavucontrol" # ????? "float, title:^(Picture-in-Picture)$" "pin, title:^(Picture-in-Picture)$" # discord/vesktop "workspace: name:discord, class:^(vesktop)$" "float, class:^(vesktop)$,title:^(Discord Popout)$" "pin, class:^(vesktop)$,title:^(Discord Popout)$" # Steam "float, class:^([Ss]team)$, title:^((?![Ss]team).*)$" "workspace name:steam silent, class:^([Ss]team)$, title:^([Ss]team)$" "tile, class:^([Ss]team)$, title:^([Ss]team)$" "float, class:^(steam)$,title:^(Friends List)$" # Code # "pin, class:^(code)$,title:^(Save As)$" "float, class:^(code)$,title:^(Save As)$" "float, class:^(xdg-desktop-portal-gtk)$,title:^(Open Workspace from File)$" # Game Tearing??? https://wiki.hyprland.org/Configuring/Tearing/ "immediate, class:gamescope" # todo properly fix this shit instead of using gamescope # vmware "tag +horizonrdp, class:Remote Desktop Connection,title:BBar" "tag +horizonrdp, class:Remote Desktop Connection,title:Remote Desktop Connection" "noanim, tag:horizonrdp" "noblur, tag:horizonrdp" "norounding, tag:horizonrdp" "noshadow, tag:horizonrdp" "immediate, tag:horizonrdp" "allowsinput, tag:horizonrdp" "noborder, tag:horizonrdp" "nodim, tag:horizonrdp" "nomaxsize, tag:horizonrdp" "float, class:Vmware-view,title:VMware Horizon Client" "float, class:Remote Desktop Connection,title:^(Remote Desktop Connection)$" "float, class:Remote Desktop Connection,title:^(5cd238b4x0)$" "float, class:Credential Manager UI Host,title:Windows Security" ]; input = { kb_layout = "us"; kb_variant = ""; kb_model = ""; kb_options = ""; kb_rules = ""; numlock_by_default = true; follow_mouse = 1; touchpad = { natural_scroll = "no"; }; sensitivity = 0; # -1.0 - 1.0, 0 means no modification. }; }; extraConfig = '' exec-once = dbus-update-activation-environment --systemd --all exec-once = systemctl --user import-environment WAYLAND_DISPLAY XDG_CURRENT_DESKTOP exec-once = /usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1 exec-once = nwg-look -a exec-once = nm-applet exec-once = blueberry-tray exec-once = [silent] firefox exec-once = [silent] vesktop exec-once = [silent] spotify exec-once = [silent] steam ''; }; }