{pkgs, ...}: let terminal = "${pkgs.foot}/bin/footclient"; nautilus = "${pkgs.nautilus}/bin/nautilus"; in { # Since native Home Manager doesn't have a programs.niri module yet, # we generate the KDL configuration file directly. services.hyprpaper = { enable = true; settings = { ipc = "off"; splash = false; wallpaper = { path = "${../hyprland/files/wallpaper.png}"; monitor = ""; }; }; }; programs.hyprlock = { enable = true; settings = { input-field = [ { size = "200, 50"; position = "0, -80"; monitor = ""; dots_center = true; fade_on_empty = true; font_color = "rgb(202, 211, 245)"; inner_color = "rgb(91, 96, 120)"; outer_color = "rgb(24, 25, 38)"; outline_thickness = 3; placeholder_text = "Password..."; shadow_passes = 2; } ]; general = { no_fade_in = false; }; background = [ { path = "screenshot"; blur_passes = 3; blur_size = 8; } ]; }; }; xdg.configFile."niri/config.kdl".text = '' spawn-at-startup "${pkgs.hyprpaper}/bin/hyprpaper" spawn-at-startup "foot" "--server" spawn-at-startup "ags" "run" spawn-at-startup "${pkgs.mate-polkit}/bin/polkit-mate" prefer-no-csd layout { gaps 5 border { off } focus-ring { width 4 active-color "rgba(0, 47, 95, 238)" inactive-color "rgba(255, 255, 255, 0)" } } input { touchpad { tap } focus-follows-mouse max-scroll-amount="10%" warp-mouse-to-focus } output "eDP-1" { scale 1.2 } window-rule { match app-id="vicinae" open-floating true } binds { // General Binds Mod+Return { spawn "${terminal}"; } Mod+Shift+Return { spawn "${terminal}"; } Mod+Q { close-window; } Mod+A { spawn "${nautilus}"; } Mod+B { spawn "Helium"; } Mod+M { maximize-column; } Mod+F { fullscreen-window; } // Vicinae Binds Mod+C { spawn "vicinae" "vicinae://extensions/vicinae/clipboard/history"; } Mod+N { spawn "vicinae" "vicinae://extensions/vicinae/wm/switch-windows"; } Mod+Escape { spawn "vicinae" "open" "-q" "Power Management "; } // Main Vicinae Toggle Mod+Space { spawn "vicinae" "toggle"; } Mod+Comma { consume-or-expel-window-left; } Mod+Period { consume-or-expel-window-right; } Mod+Shift+Minus { set-window-height "-10%"; } Mod+Shift+Equal { set-window-height "+10%"; } // Movement Mod+H { focus-column-left; } Mod+J { focus-window-down; } Mod+K { focus-window-up; } Mod+L { focus-column-right; } Mod+Shift+H { move-column-left; } Mod+Shift+L { move-column-right; } Mod+Shift+J { move-window-down; } Mod+Shift+K { move-window-up; } // Workspaces Mod+1 { focus-workspace 1; } Mod+2 { focus-workspace 2; } Mod+3 { focus-workspace 3; } Mod+4 { focus-workspace 4; } Mod+5 { focus-workspace 5; } Mod+6 { focus-workspace 6; } Mod+7 { focus-workspace 7; } Mod+8 { focus-workspace 8; } Mod+9 { focus-workspace 9; } // Move to workspace Mod+Shift+1 { move-column-to-workspace 1; } Mod+Shift+2 { move-column-to-workspace 2; } Mod+Shift+3 { move-column-to-workspace 3; } Mod+Shift+4 { move-column-to-workspace 4; } Mod+Shift+5 { move-column-to-workspace 5; } Mod+Shift+6 { move-column-to-workspace 6; } Mod+Shift+7 { move-column-to-workspace 7; } Mod+Shift+8 { move-column-to-workspace 8; } Mod+Shift+9 { move-column-to-workspace 9; } } ''; }