116 lines
5.1 KiB
Plaintext
116 lines
5.1 KiB
Plaintext
// ~/.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}
|
||
}
|
||
|