{ pkgs, config, lib, ... }: { programs.niri = { enable = true; package = pkgs.niri; # follows nixpkgs version because i am lazy, probably more stable to use the flake one TODO settings = { prefer-no-csd = true; # no client-side-decorations hotkey-overlay = { skip-at-startup = true; }; input = { mod-key = "SUPER"; focus-follows-mouse = { enable = true; max-scroll-amount = "95%"; }; mouse.natural-scroll = false; }; outputs = { "eDP-2" = { focus-at-startup = true; #name = "laptop_monitor"; position = { x = 0; y = 0; }; }; "Lenovo Group Limited LEN G24-10 U5B4ZAM2" = { #name = "right_monitor"; position = { x = 960; y = -1080; }; }; "Lenovo Group Limited LEN G24-10 U5B4KL78" = { #name = "left_monitor"; position = { x = -960; y = -1080; }; }; }; workspaces = { "main".open-on-output = "eDP-2"; "comms".open-on-output = "Lenovo Group Limited LEN G24-10 U5B4KL78"; "bg_noise".open-on-output = "Lenovo Group Limited LEN G24-10 U5B4ZAM2"; }; layout = { gaps = 5; struts = let r = 5; in { left = r; right = r; bottom = r; top = r; }; }; binds = with config.lib.niri.actions; { # keybinds for spawning apps "Mod+1".action = spawn "kitty"; "Mod+F".action = spawn "librewolf"; "Mod+D".action = spawn "vesktop"; "Mod+Space".action = spawn "sh -c 'wofi --show drun, run'"; "Mod+Alt+L".action = spawn "hyprlock"; "Print".action = screenshot; "Mod+2".action = show-hotkey-overlay; # window controls #"Mod".action = toggle-overview; "Mod+F11".action = fullscreen-window; "Mod+x".action = close-window; "Mod+Tab".action = toggle-window-floating; "Mod+h".action = focus-column-or-monitor-left; "Mod+j".action = focus-window-or-monitor-down; "Mod+k".action = focus-window-or-monitor-up; "Mod+l".action = focus-column-or-monitor-right; "Mod+Shift+h".action = consume-or-expel-window-left; # no idea if this should be swap-window-left instead "Mod+Shift+j".action = move-window-down; "Mod+Shift+k".action = move-window-up; "Mod+Shift+l".action = consume-or-expel-window-right; # see above comment "Mod+WheelScrollUp".action = focus-workspace-up; "Mod+WheelScrollDown".action = focus-workspace-down; # not sure if these mouse scroll keybinds are in the right direction "Mod+Up".action = focus-workspace-up; "Mod+Down".action = focus-workspace-down; # not sure how to do the "send window to workspace" keybinds from the hyprland config }; window-rules = [ { geometry-corner-radius = let r = 10.0; in { top-left = r; top-right = r; bottom-left = r; bottom-right = r; }; clip-to-geometry = true; } { excludes = [ { is-active = true; } ]; opacity = 0.7; } ]; xwayland-satellite = { enable = true; path = lib.getExe pkgs.xwayland-satellite; }; }; }; # home.packages = with pkgs; [ # xwayland-satellite-unstable # ]; }