modularize niri config

This commit is contained in:
Alexander Navarro 2026-01-08 14:49:09 -03:00
parent 272aadbda3
commit efbbe37a30
6 changed files with 436 additions and 502 deletions

291
configs/niri/base/keys.kdl Normal file
View file

@ -0,0 +1,291 @@
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
}
}