binds { // ────────────── Keybindings ────────────── // https://github.com/YaLTeR/niri/wiki/Configuration:-Key-Bindings // ─── noctalia-shell keybinds ─── // https://docs.noctalia.dev/getting-started/keybinds/ Mod+Shift+ESCAPE { show-hotkey-overlay; } // ─── Applications ─── Mod+Return hotkey-overlay-title="Open Terminal: Ghostty" { spawn "ghostty"; } Mod+B hotkey-overlay-title="Open Browser: firefox" { spawn "firefox"; } // --- Noctalia --- Mod+Shift+Return hotkey-overlay-title="Open Wallpaper Selector: noctalia wallpaper toggle" { spawn-sh "noctalia msg panel-toggle wallpaper"; } Mod+S hotkey-overlay-title="Open Control Center: noctalia controlCenter" { spawn-sh "noctalia msg panel-toggle control-center"; } Mod+Shift+O hotkey-overlay-title="Open Settings: noctalia settings" { spawn-sh "noctalia msg settings-toggle"; } Mod+D hotkey-overlay-title="Open App Launcher: noctalia launcher" { spawn-sh "noctalia msg panel-toggle launcher"; } Mod+ALT+L hotkey-overlay-title="Lock Screen: noctalia lock" { spawn-sh "noctalia msg session lock"; } Mod+Shift+Q hotkey-overlay-title="Session Menu: noctalia sessionMenu" { spawn-sh "noctalia msg panel-toggle session"; } Mod+V hotkey-overlay-title="Clipboard History: noctalia panel" { spawn-sh "noctalia msg panel-toggle clipboard"; } Alt+TAB hotkey-overlay-title="Window Switcher: noctalia" { spawn-sh "noctalia msg window-switcher"; } Mod+Shift+Space hotkey-overlay-title="Handy: toggle post-process recording" allow-when-locked=true { spawn-sh "handy --toggle-post-process"; } Mod+Shift+D hotkey-overlay-title="Cycle Desk Profile" { spawn-sh "/home/blank/.omp/scripts/desk.sh cycle"; } // Please set the text editor of your choice. // Mod+Shift+E hotkey-overlay-title="Open Text Editor: Zed" { spawn "zed"; } // Please choose your own file manager. Mod+E hotkey-overlay-title="File Manager: Nautilus" { spawn "nautilus"; } // ─── Media Controls ─── XF86AudioRaiseVolume allow-when-locked=true { spawn-sh "noctalia msg volume-up"; } XF86AudioLowerVolume allow-when-locked=true { spawn-sh "noctalia msg volume-down"; } XF86AudioMute allow-when-locked=true { spawn-sh "noctalia msg volume-mute"; } XF86AudioMicMute allow-when-locked=true { spawn-sh "noctalia msg mic-mute"; } XF86AudioNext allow-when-locked=true { spawn-sh "noctalia msg media next"; } XF86AudioPrev allow-when-locked=true { spawn-sh "noctalia msg media previous"; } XF86AudioPlay allow-when-locked=true { spawn-sh "noctalia msg media play"; } XF86AudioPause allow-when-locked=true { spawn-sh "noctalia msg media stop"; } // ─── Brightness Controls ─── XF86MonBrightnessUp allow-when-locked=true { spawn-sh "noctalia msg brightness-up"; } XF86MonBrightnessDown allow-when-locked=true { spawn-sh "noctalia msg brightness-down"; } // ─── Window Movement and Focus ─── Mod+Q { close-window; } Mod+Left { focus-column-left; } Mod+H { focus-column-left; } Mod+Right { focus-column-right; } Mod+L { focus-column-right; } Mod+Up { focus-window-up; } Mod+K { focus-window-up; } Mod+Down { focus-window-down; } Mod+J { focus-window-down; } // swap-window = window walks sideways, joining/exiting columns it passes Mod+CTRL+Left { swap-window-left; } Mod+CTRL+H { swap-window-left; } Mod+CTRL+Right { swap-window-right; } Mod+CTRL+L { swap-window-right; } Mod+CTRL+Alt+Left { move-column-left; } Mod+CTRL+Alt+H { move-column-left; } Mod+CTRL+Alt+Right { move-column-right; } Mod+CTRL+Alt+L { move-column-right; } Mod+CTRL+UP { move-window-up; } Mod+CTRL+K { move-window-up; } Mod+CTRL+Down { move-window-down; } Mod+CTRL+J { move-window-down; } 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+Shift+Left { focus-monitor-left; } Mod+Shift+Right { focus-monitor-right; } Mod+Shift+UP { focus-monitor-up; } Mod+Shift+Down { focus-monitor-down; } Mod+Shift+CTRL+Left { move-column-to-monitor-left; } Mod+Shift+CTRL+Right { move-column-to-monitor-right; } Mod+Shift+CTRL+UP { move-column-to-monitor-up; } Mod+Shift+CTRL+Down { move-column-to-monitor-down; } Mod+Shift+V { switch-focus-between-floating-and-tiling; } 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-column-width-back; } Mod+Ctrl+Shift+R { switch-preset-window-height; } Mod+Ctrl+R { reset-window-height; } // ─── Workspace Switching ─── Mod+WheelScrollDown cooldown-ms=150 { focus-workspace-down; } Mod+WheelScrollUp cooldown-ms=150 { focus-workspace-up; } 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+Shift+WheelScrollDown { focus-column-right; } Mod+Shift+WheelScrollUp { focus-column-left; } Mod+CTRL+Shift+WheelScrollDown { move-column-right; } Mod+CTRL+Shift+WheelScrollUp { 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+CTRL+1 { move-column-to-workspace 1; } Mod+CTRL+2 { move-column-to-workspace 2; } Mod+CTRL+3 { move-column-to-workspace 3; } Mod+CTRL+4 { move-column-to-workspace 4; } Mod+CTRL+5 { move-column-to-workspace 5; } Mod+CTRL+6 { move-column-to-workspace 6; } Mod+CTRL+7 { move-column-to-workspace 7; } Mod+CTRL+8 { move-column-to-workspace 8; } Mod+CTRL+9 { move-column-to-workspace 9; } Mod+TAB { focus-workspace-previous; } // ─── Layout Controls ─── Mod+CTRL+F { expand-column-to-available-width; } Mod+C { center-column; } Mod+CTRL+C { center-visible-columns; } Mod+Minus { set-column-width "-10%"; } Mod+Equal { set-column-width "+10%"; } Mod+Shift+Minus { set-window-height "-10%"; } Mod+Shift+Equal { set-window-height "+10%"; } // ─── Modes ─── Mod+T { toggle-window-floating; } Mod+F { maximize-column; } Mod+Shift+F { fullscreen-window; } Mod+W { toggle-column-tabbed-display; } Mod+M { maximize-window-to-edges; } // ─── Screenshots ─── // flameshot retired 2026-10-14: its Wayland capture goes through // xdg-desktop-portal-gnome → niri's GNOME-screenshot API, which is // single-output only (niri#4313). Verified docked: full AND screen hang // ~15 s, then error bubbles; no file. Niri-native equivalents below; // details in omp-docs/tools/niri/screenshots.md. // Absolute paths: niri's spawn-sh PATH lacks ~/.local/bin. Print hotkey-overlay-title="Screenshot: all monitors (per-monitor files)" { spawn-sh "/home/blank/.omp/scripts/screenshot-desk.sh"; } CTRL+Shift+1 hotkey-overlay-title="Screenshot: all monitors (per-monitor files)" { spawn-sh "/home/blank/.omp/scripts/screenshot-desk.sh"; } Mod+Shift+S hotkey-overlay-title="Screenshot: all monitors (per-monitor files)" { spawn-sh "/home/blank/.omp/scripts/screenshot-desk.sh"; } Alt+Print hotkey-overlay-title="Screenshot: focused monitor to disk" { screenshot-screen; } CTRL+Shift+2 hotkey-overlay-title="Screenshot: focused monitor to disk" { screenshot-screen; } Ctrl+Print hotkey-overlay-title="Screenshot: interactive (region/window/screen)" { screenshot; } CTRL+Shift+3 hotkey-overlay-title="Screenshot: interactive (region/window/screen)" { screenshot; } // ─── Emergency Escape Key ─── // Use this when a fullscreen app blocks your keybinds. // It disables any active keyboard shortcut inhibitor, restoring control. Mod+ESCAPE allow-inhibiting=false { toggle-keyboard-shortcuts-inhibit; } // ─── Exit / Power ─── CTRL+ALT+Delete { quit; } // Also quits Niri Mod+Shift+P { power-off-monitors; } // Turn off screens (useful for OLED or privacy) Mod+O repeat=false { toggle-overview; } }