input { keyboard { xkb { layout "gb,ru,de,us" variant ",phonetic_winkeys,,dvorak" options "grp:rctrl_rshift_toggle,,caps:escape, " // compose:ralt // compose:102 } repeat-rate 60 repeat-delay 200 } touchpad { tap } // focus-follows-mouse max-scroll-amount="0%" focus-follows-mouse } // Laptop output "eDP-1" { mode "1920x1080@59.999" scale 1 position x=0 y=0 } // PC output "DP-2" { mode "1920x1080@59.999" scale 1 position x=0 y=0 } output "HDMI-A-1" { mode "1920x1080@59.999" scale 1 position x=1920 y=0 } layout { gaps 8 center-focused-column "on-overflow" preset-column-widths { proportion 0.5 proportion 0.66667 proportion 0.33333 } default-column-width { proportion 0.5; } focus-ring { off } border { width 4 active-color "ffc87f" inactive-color "#505050" } } // xwayland stuff spawn-at-startup "xwayland-satellite" spawn-at-startup "avizo-service" spawn-at-startup "keepassxc" spawn-at-startup "startxfce4" environment { DISPLAY ":0" } // prefer no client side decorations prefer-no-csd // no saving screenshots screenshot-path null switch-events { lid-close { spawn "swaylock"; } } workspace "main" workspace "scratch" workspace "browser" workspace "social" workspace "keepass" workspace "infra" workspace "multimedia" animations { off slowdown 1.0 window-open { // duration-ms 1250 // curve "linear" custom-shader r" vec4 open_color(vec3 coords_geo, vec3 size_geo) { // Get color from the window texture. vec3 coords_tex = niri_geo_to_tex * coords_geo; vec4 color = texture2D(niri_tex, coords_tex.st); vec2 coords = (coords_geo.xy - vec2(0.5, 0.5)) * size_geo.xy * 2.0; coords = coords / length(size_geo.xy); float p = niri_clamped_progress; if (p * p <= dot(coords, coords)) color = vec4(0.0); return color; } " } workspace-switch { spring damping-ratio=1.0 stiffness=1000 epsilon=0.0001 } } // Open the Firefox picture-in-picture player as floating by default. window-rule { match app-id=r#"librewolf$"# title="^Picture-in-Picture$" open-floating true open-on-workspace "browser" } window-rule { match app-id=r#"^org\.keepassxc\.KeePassXC$"# block-out-from "screen-capture" open-on-workspace "keepass" } hotkey-overlay { skip-at-startup } cursor { xcursor-theme "BreezeX-RosePine-Linux" xcursor-size 32 hide-when-typing } binds { Mod+Shift+Slash { show-hotkey-overlay; } Mod+Return { spawn "foot"; } Mod+D { spawn "fuzzel"; } Super+Alt+L { spawn "swaylock"; } // Audio XF86AudioRaiseVolume allow-when-locked=true { spawn "volumectl" "-u" "up"; } XF86AudioLowerVolume allow-when-locked=true { spawn "volumectl" "-u" "down"; } XF86AudioMute allow-when-locked=true { spawn "volumectl" "toggle-mute"; } XF86AudioMicMute allow-when-locked=true { spawn "volumectl" "-m" "toggle-mute"; } XF86AudioPlay allow-when-locked=true { spawn "playerctl" "play-pause"; } XF86AudioNext allow-when-locked=true { spawn "playerctl" "next"; } XF86AudioPrev allow-when-locked=true { spawn "playerctl" "previous"; } // Monitor brightness XF86MonBrightnessUp allow-when-locked=true { spawn "lightctl" "up"; } XF86MonBrightnessDown allow-when-locked=true { spawn "lightctl" "down"; } Mod+Q { close-window; } Mod+H { focus-column-left; } Mod+J { focus-window-or-workspace-down; } Mod+K { focus-window-or-workspace-up; } Mod+L { focus-column-right; } Mod+Shift+H { move-column-left; } Mod+Shift+J { move-window-down-or-to-workspace-down; } Mod+Shift+K { move-window-up-or-to-workspace-up; } Mod+Shift+L { move-column-right; } Mod+Home { focus-column-first; } Mod+End { focus-column-last; } Mod+Ctrl+Home { move-column-to-first; } Mod+Ctrl+End { move-column-to-last; } Mod+Ctrl+H { focus-monitor-left; } Mod+Ctrl+J { focus-monitor-down; } Mod+Ctrl+K { focus-monitor-up; } Mod+Ctrl+L { focus-monitor-right; } Mod+Shift+Ctrl+Left { move-column-to-monitor-left; } Mod+Shift+Ctrl+Down { move-column-to-monitor-down; } Mod+Shift+Ctrl+Up { move-column-to-monitor-up; } Mod+Shift+Ctrl+Right { move-column-to-monitor-right; } Mod+Shift+Ctrl+H { move-column-to-monitor-left; } Mod+Shift+Ctrl+J { move-column-to-monitor-down; } Mod+Shift+Ctrl+K { move-column-to-monitor-up; } Mod+Shift+Ctrl+L { move-column-to-monitor-right; } Mod+Page_Down { focus-workspace-down; } Mod+Page_Up { focus-workspace-up; } Mod+Shift+Page_Down { move-column-to-workspace-down; } Mod+Shift+Page_Up { move-column-to-workspace-up; } Mod+U { focus-workspace-down; } Mod+I { focus-workspace-up; } Mod+Shift+U { move-column-to-workspace-down; } Mod+Shift+I { move-column-to-workspace-up; } Mod+WheelScrollDown cooldown-ms=150 { focus-workspace-down; } Mod+WheelScrollUp cooldown-ms=150 { focus-workspace-up; } Mod+Shift+WheelScrollDown cooldown-ms=150 { move-column-to-workspace-down; } Mod+Shift+WheelScrollUp cooldown-ms=150 { move-column-to-workspace-up; } Mod+WheelScrollRight { focus-column-right; } Mod+WheelScrollLeft { focus-column-left; } Mod+Shift+WheelScrollRight { move-column-right; } Mod+Shift+WheelScrollLeft { move-column-left; } 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; } 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; } Mod+BracketLeft { consume-or-expel-window-left; } Mod+BracketRight { consume-or-expel-window-right; } Mod+Comma { consume-window-into-column; } Mod+Period { expel-window-from-column; } Mod+R { switch-preset-column-width; } Mod+Shift+R { switch-preset-window-height; } Mod+Ctrl+R { reset-window-height; } Mod+F { maximize-column; } Mod+Shift+F { fullscreen-window; } Mod+Ctrl+F { expand-column-to-available-width; } Mod+C { center-column; } Mod+A {spawn "niri-switch-to-workspace"; } Mod+Minus { set-column-width "-10%"; } Mod+Equal { set-column-width "+10%"; } // Finer height adjustments when in column with other windows. Mod+Shift+Minus { set-window-height "-10%"; } Mod+Shift+Equal { set-window-height "+10%"; } // Move the focused window between the floating and the tiling layout. Mod+V { toggle-window-floating; } Mod+Shift+V { switch-focus-between-floating-and-tiling; } Mod+W { toggle-column-tabbed-display; } Print { screenshot; } Ctrl+Print { screenshot-screen; } Alt+Print { screenshot-window; } Mod+Escape allow-inhibiting=false { toggle-keyboard-shortcuts-inhibit; } Mod+Shift+E { quit; } Mod+Shift+P { power-off-monitors; } }