// ~/.config/niri/config.kdl // Validate with: niri validate // Docs: https://yalter.github.io/niri/Configuration:-Introduction // :contentReference[oaicite:0]{index=0} // --------- OUTPUTS (rotate the GPD Pocket 4 panel) --------- output "eDP-1" { // Uncomment the next line to disable this output: // off transform "270" // rotate 90°; use "270" if it’s the other way. :contentReference[oaicite:1]{index=1} // scale 1.25 // optional UI scaling } // --------- LAYOUT / LOOK --------- layout { gaps 5 default-column-width { proportion 0.5; } } // --------- STARTUP DAEMONS --------- spawn-at-startup "waybar" // bar spawn-at-startup "mako" // notifications spawn-at-startup "blueman-applet" // bluetooth tray spawn-at-startup "nm-applet" // network tray // (spawn-at-startup works like a “spawn” action at session start.) :contentReference[oaicite:2]{index=2} // Screenshots path used by niri’s built-in screenshot actions. screenshot-path "~/Pictures/Screenshots/Screenshot from %Y-%m-%d %H-%M-%S.png" // --------- KEYBINDS (DWM muscle memory) --------- binds { // Launchers / commands (from your config.h) Mod+Shift+Return { spawn "kitty"; } // Focus like DWM: j/k Mod+J { focus-window-down; } // next client in column Mod+K { focus-window-up; } // prev client in column // :contentReference[oaicite:3]{index=3} // Master-ish resizing Mod+H { set-column-width "-10%"; } Mod+L { set-column-width "+10%"; } Mod+I { set-window-height "+10%"; } Mod+D { set-window-height "-10%"; } // “Zoom” feel (cycle preset column widths) Mod+Return { switch-preset-column-width; } // builtin behavior in niri releases. :contentReference[oaicite:4]{index=4} // DWM: Mod+Tab view previous Mod+Tab { focus-workspace-previous; } // workspace nav semantics here. :contentReference[oaicite:5]{index=5} // Close (killclient) Mod+Shift+C { close-window; } // :contentReference[oaicite:6]{index=6} // Layout-ish toggles Mod+F { toggle-window-floating; } // float Mod+M { fullscreen-window; } // monocle-like fullscreen Mod+T { maximize-column; } // tile-ish column maximize // Overview (since DWM’s “view all” has no true analogue) Mod+0 { toggle-overview; } // overview feature in new niri. :contentReference[oaicite:7]{index=7} // “shiftview” between workspaces Mod+Shift+K { focus-workspace-up; } Mod+Shift+J { focus-workspace-down; } // :contentReference[oaicite:8]{index=8} // View workspaces 1..9 (DWM TAGKEYS view) 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; } // indices are dynamic per monitor. :contentReference[oaicite:9]{index=9} // Tag (send) focused column to workspace N (closest to DWM tag) 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; } // :contentReference[oaicite:10]{index=10} // Monitors (focus/tag mon) Mod+Shift+L { focus-monitor-right; } Mod+Shift+H { focus-monitor-left; } Mod+Shift+I { move-column-to-monitor-up; } Mod+Shift+U { move-column-to-monitor-down; } // Quit (DWM Mod+Shift+Q) Mod+Shift+Q { quit skip-confirmation=true; } // Media / volume / brightness XF86AudioRaiseVolume allow-when-locked=true { spawn "wpctl" "set-volume" "@DEFAULT_AUDIO_SINK@" "0.05+"; } XF86AudioLowerVolume allow-when-locked=true { spawn "wpctl" "set-volume" "@DEFAULT_AUDIO_SINK@" "0.05-"; } XF86AudioMute allow-when-locked=true { spawn "wpctl" "set-mute" "@DEFAULT_AUDIO_SINK@" "toggle"; } XF86AudioMicMute allow-when-locked=true { spawn "wpctl" "set-mute" "@DEFAULT_AUDIO_SOURCE@" "toggle"; } XF86AudioPlay { spawn "playerctl" "play-pause"; } XF86AudioNext { spawn "playerctl" "next"; } XF86AudioPrev { spawn "playerctl" "previous"; } XF86MonBrightnessUp allow-when-locked=true { spawn "brightnessctl" "--class=backlight" "set" "+5%"; } XF86MonBrightnessDown allow-when-locked=true { spawn "brightnessctl" "--class=backlight" "set" "5%-"; } // Screenshots (to screenshot-path) Print { screenshot; } Ctrl+Print { screenshot-screen; } Alt+Print { screenshot-window; } // actions are available via niri msg action too. :contentReference[oaicite:11]{index=11} }