{ inputs, config, lib, pkgs, ... }: { options.niri = { enable = lib.mkEnableOption "Enables niri"; outputs = lib.mkOption { default = {}; }; mouse.accel = lib.mkOption { default = 0.0; }; }; imports = [ inputs.niri.homeModules.niri ]; config = lib.mkIf config.niri.enable { home.packages = [ pkgs.xwayland-satellite ]; programs.niri = { enable = true; settings = { prefer-no-csd = true; screenshot-path = config.xdg.userDirs.pictures + "/screenshots"; spawn-at-startup = [ { command = [ "xwayland-satellite" ]; } ]; environment = { ELECTRON_OZONE_PLATFORM_HINT = "auto"; DISPLAY = ":0"; }; outputs = config.niri.outputs; input = { mouse = { accel-profile = "flat"; accel-speed = config.niri.mouse.accel; }; }; layout = { gaps = 3; focus-ring.enable = false; border = { enable = true; width = 2; active.color = "#F5C2E7"; inactive.color = "#1E1D2F"; }; preset-column-widths = [ { proportion = 1. / 2.; } { proportion = 1.; } ]; }; animations = { slowdown = 0.6; }; binds = with config.lib.niri.actions; { "Mod+Return".action= spawn "${config.defaultApps.terminal}"; "Mod+Shift+Return".action = spawn "${pkgs.fuzzel}/bin/fuzzel"; "Mod+P".action = screenshot; "Mod+Shift+P".action = screenshot-window; "Mod+Tab".action = switch-preset-column-width; "Mod+Shift+Q".action = quit; "Mod+C".action = close-window; "Mod+Space".action = maximize-column; "Mod+SHIFT+Space".action = fullscreen-window; "Mod+A".action = focus-monitor-left; "Mod+F".action = focus-monitor-right; "Mod+S".action = move-column-to-monitor-left; "Mod+D".action = move-column-to-monitor-right; "Mod+SHIFT+A".action = move-workspace-to-monitor-left; "Mod+SHIFT+F".action = move-workspace-to-monitor-right; "Mod+H".action = focus-column-left; "Mod+J".action = focus-window-or-workspace-down; "Mod+K".action = focus-window-or-workspace-up; "Mod+L".action = focus-column-right; "Mod+SHIFT+H".action = consume-or-expel-window-left; "Mod+SHIFT+J".action = move-window-down-or-to-workspace-down; "Mod+SHIFT+K".action = move-window-up-or-to-workspace-up; "Mod+SHIFT+L".action = consume-or-expel-window-right; "Mod+BracketLeft".action = set-column-width "-10%"; "Mod+BracketRight".action = set-column-width "+10%"; # "MOD+I".action = spawn-scratchpad; }; }; }; }; }