// ~/.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.6 // optional UI scaling } input { touch { map-to-output "eDP-1" } } switch-events { tablet-mode-on { spawn "bash" "-c" "gsettings set org.gnome.desktop.a11y.applications screen-keyboard-enabled true"; } tablet-mode-off { spawn "bash" "-c" "gsettings set org.gnome.desktop.a11y.applications screen-keyboard-enabled false"; } } // --------- LAYOUT / LOOK --------- layout { gaps 7 default-column-width { proportion 0.8; } focus-ring { width 4 } shadow { softness 30 spread 5 offset x=0 y=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 "swaybg" "-i" "/home/tyler/.desktop/wallpaper/main.jpg" "-m" "fill" // Screenshots path used by niri’s built-in screenshot actions. screenshot-path "~/Pictures/Screenshots/Screenshot from %Y-%m-%d %H-%M-%S.png" prefer-no-csd environment { ELECTRON_OZONE_PLATFORM_HINT "auto" } binds { Mod+Shift+Return { spawn "kitty"; } Mod+P { spawn "fuzzel"; } // Move around in the same column // Mod+J { focus-window-down; } // next client in column // Mod+K { focus-window-up; } // prev client in column // :contentReference[oaicite:3]{index=3} // // Move aroudn side by side // Mod+H { focus-column-left; } // Mod+L { focus-column-right; } Mod+J { focus-window-down-or-column-right; } // next client in column Mod+K { focus-window-up-or-column-left; } // prev client in column // :contentReference[oaicite:3]{index=3} // Move aroudn side by side // Mod+H { focus-column-left; } // Mod+L { focus-column-right; } // Monitors (focus/tag mon) Mod+Shift+L { focus-monitor-right; } Mod+Shift+H { focus-monitor-left; } Mod+Shift+I { move-column-to-monitor-previous; } Mod+Shift+U { move-column-to-monitor-next; } // “shiftview” between workspaces Mod+Shift+K { focus-workspace-up; } Mod+Shift+J { focus-workspace-down; } // :contentReference[oaicite:8]{index=8} // 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 Mod+0 { toggle-overview; } // overview feature in new niri. :contentReference[oaicite:7]{index=7} // 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} // 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} }