binds { Mod+Shift+Slash { show-hotkey-overlay } // // ╭─────────────────────────────────────────────────────────╮ // │ Launchers │ // ╰─────────────────────────────────────────────────────────╯ // Mod+Return hotkey-overlay-title="Open Terminal" { spawn "kitty" } Mod+Shift+Return hotkey-overlay-title="Open Quick Terminal" { spawn "kitten" "quick_access_terminal" } Mod+D hotkey-overlay-title="Launcher" { spawn "qs" "ipc" "-c" "noctalia-shell" "call" "launcher" "toggle" } // // ╭─────────────────────────────────────────────────────────╮ // │ Layout │ // ╰─────────────────────────────────────────────────────────╯ // Mod+R { switch-preset-column-width } Mod+Shift+R { expand-column-to-available-width } Mod+F { maximize-column } Mod+Shift+F { fullscreen-window } Mod+C { center-column } // // ╭─────────────────────────────────────────────────────────╮ // │ Window Management │ // ╰─────────────────────────────────────────────────────────╯ // Mod+W repeat=false { toggle-overview } Mod+Shift+Q repeat=false { close-window } // // ── Change focus ──────────────────────────────────────────────────── // Mod+Tab { focus-column-right-or-first } Mod+shift+Tab { focus-column-left-or-last } Mod+Left { focus-column-left } Mod+Down { focus-window-or-workspace-down } Mod+Up { focus-window-or-workspace-up } Mod+Right { focus-column-or-monitor-right } Mod+Ctrl+Left { consume-or-expel-window-left } Mod+Ctrl+Right { consume-or-expel-window-right } Mod+Alt+Left { consume-window-into-column } Mod+Alt+Right { expel-window-from-column } 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+Ctrl+H { consume-or-expel-window-left } Mod+Ctrl+L { consume-or-expel-window-right } Mod+Alt+H { consume-window-into-column } Mod+Alt+L { expel-window-from-column } Mod+WheelScrollDown cooldown-ms=150 { focus-column-right } Mod+WheelScrollUp cooldown-ms=150 { focus-column-left } Mod+Space { switch-focus-between-floating-and-tiling } // // ── Move windows ──────────────────────────────────────────────────── // Mod+Shift+Left { move-column-left } Mod+Shift+Down { move-window-down-or-to-workspace-down } Mod+Shift+Up { move-window-up-or-to-workspace-up } Mod+Shift+Right { move-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+Ctrl+WheelScrollDown cooldown-ms=150 { move-column-to-workspace-down } Mod+Ctrl+WheelScrollUp cooldown-ms=150 { move-column-to-workspace-up } Mod+WheelScrollRight { focus-column-right } Mod+WheelScrollLeft { focus-column-left } Mod+Ctrl+WheelScrollRight { move-column-right } Mod+Ctrl+WheelScrollLeft { move-column-left } Mod+Ctrl+Shift+WheelScrollDown { move-column-right } Mod+Ctrl+Shift+WheelScrollUp { move-column-left } Mod+Shift+Space { toggle-window-floating } // // ╭─────────────────────────────────────────────────────────╮ // │ Workspaces │ // ╰─────────────────────────────────────────────────────────╯ // Mod+Bar { // Switches focus between the current and the previous workspace. focus-workspace-previous } 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-window-to-workspace 1 } Mod+Shift+2 { move-window-to-workspace 2 } Mod+Shift+3 { move-window-to-workspace 3 } Mod+Shift+4 { move-window-to-workspace 4 } Mod+Shift+5 { move-window-to-workspace 5 } Mod+Shift+6 { move-window-to-workspace 6 } Mod+Shift+7 { move-window-to-workspace 7 } Mod+Shift+8 { move-window-to-workspace 8 } Mod+Shift+9 { move-window-to-workspace 9 } Mod+Shift+WheelScrollDown cooldown-ms=150 { focus-workspace-down } Mod+Shift+WheelScrollUp cooldown-ms=150 { focus-workspace-up } // // ╭─────────────────────────────────────────────────────────╮ // │ Volume │ // ╰─────────────────────────────────────────────────────────╯ // XF86AudioRaiseVolume allow-when-locked=true { spawn-sh "wpctl set-volume @DEFAULT_AUDIO_SINK@ 0.025+" } XF86AudioLowerVolume allow-when-locked=true { spawn-sh "wpctl set-volume @DEFAULT_AUDIO_SINK@ 0.025-" } XF86AudioMute allow-when-locked=true { spawn-sh "wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle" } XF86AudioMicMute allow-when-locked=true { spawn-sh "wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle" } // // ╭─────────────────────────────────────────────────────────╮ // │ Brightness │ // ╰─────────────────────────────────────────────────────────╯ // XF86MonBrightnessUp allow-when-locked=true { spawn "brightnessctl" "--class=backlight" "set" "+10%" } XF86MonBrightnessDown allow-when-locked=true { spawn "brightnessctl" "--class=backlight" "set" "10%-" } Print { screenshot } Shift+Print { screenshot-window } Shift+Ctrl+Print hotkey-overlay-title="Edit image in Clipboard" { spawn-sh "wl-paste | swappy -f -" } // Applications such as remote-desktop clients and software KVM switches may // request that niri stops processing the keyboard shortcuts defined here // so they may, for example, forward the key presses as-is to a remote machine. // It's a good idea to bind an escape hatch to toggle the inhibitor, // so a buggy application can't hold your session hostage. // // The allow-inhibiting=false property can be applied to other binds as well, // which ensures niri always processes them, even when an inhibitor is active. Mod+Escape allow-inhibiting=false { toggle-keyboard-shortcuts-inhibit } Ctrl+Alt+Delete { quit } }