input { keyboard { xkb { layout "us,ru" variant ",phonetic_winkeys" options "grp:rctrl_rshift_toggle, compose:102" } repeat-rate 60 repeat-delay 200 numlock } touchpad { tap } // focus-follows-mouse focus-follows-mouse max-scroll-amount="0%" } // 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 0 center-focused-column "on-overflow" focus-ring { width 2 active-color "#f9e2af" inactive-color "transparent" active-gradient from="#E5989B" to="#FFB4A2" angle=45 relative-to="workspace-view" in="oklch longer hue" } border { off } tab-indicator { width 2 gap 4 gaps-between-tabs 2 } shadow { on } insert-hint { color "#ffc87f80" gradient from="#f38ba880" to="#f9e2af80" angle=45 relative-to="workspace-view" } preset-column-widths { proportion 0.33333 proportion 0.5 proportion 0.66667 } default-column-width { proportion 0.5 } background-color "transparent" } // xwayland stuff // spawn-at-startup "xwayland-satellite" spawn-at-startup "kwalletd6" spawn-at-startup "nu" "-c" "quickshell --path ~/repos/projects/nichts/main/modules/style/quickshell/shell" environment { DISPLAY ":0" } layer-rule { match namespace="overview$" place-within-backdrop true } // prefer no client side decorations prefer-no-csd switch-events { lid-close { spawn "swaylock" } } overview { zoom 0.60 backdrop-color "#777777" } animations { window-close { duration-ms 250 curve "linear" custom-shader r" vec4 fall_and_rotate(vec3 coords_geo, vec3 size_geo) { float progress = niri_clamped_progress * niri_clamped_progress; vec2 coords = (coords_geo.xy - vec2(0.5, 1.0)) * size_geo.xy; coords.y -= progress * 1440.0; float random = (niri_random_seed - 0.5) / 2.0; random = sign(random) - random; float max_angle = 0.5 * random; float angle = progress * max_angle; mat2 rotate = mat2(cos(angle), -sin(angle), sin(angle), cos(angle)); coords = rotate * coords; coords_geo = vec3(coords / size_geo.xy + vec2(0.5, 1.0), 1.0); vec3 coords_tex = niri_geo_to_tex * coords_geo; vec4 color = texture2D(niri_tex, coords_tex.st); return color; } vec4 close_color(vec3 coords_geo, vec3 size_geo) { return fall_and_rotate(coords_geo, size_geo); } " } } window-rule { match app-id="unset" open-floating true } window-rule { match app-id="org.gnome.Nautilus" open-floating true } window-rule { match app-id="org.freedesktop.impl.portal.desktop.kde" open-floating true } window-rule { draw-border-with-background false } // Fix discord screencasting debug { wait-for-frame-completion-in-pipewire } 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 "ghostty" } Mod+B { spawn "brave" } Mod+D { spawn "nu" "-c" "quickshell --path ~/repos/projects/nichts/main/modules/style/quickshell/shell msg launcher open" } Mod+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-or-monitor-left } Mod+J { focus-window-or-workspace-down } Mod+K { focus-window-or-workspace-up } Mod+L { focus-column-or-monitor-right } Mod+Shift+H { move-column-left-or-to-monitor-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-or-to-monitor-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+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 } Mod+O { toggle-overview } Print { screenshot } Ctrl+Print { screenshot-screen } // Alt+Print { // spawn "sh" "-c" "" // } Mod+T { screenshot } // "$mainMod, T, exec, ${getExe pkgs.grimblast} save area - | ${getExe pkgs.tesseract} - - | ${getExe' pkgs.wl-clipboard "wl-copy"}" Mod+Escape allow-inhibiting=false { toggle-keyboard-shortcuts-inhibit } Mod+Shift+E { quit } Mod+Shift+P { power-off-monitors } }