nerd stuff
1// This config is in the KDL format: https://kdl.dev
2// "/-" comments out the following node.
3// Check the wiki for a full description of the configuration:
4// https://yalter.github.io/niri/Configuration:-Introduction
5
6// Input device configuration.
7// Find the full list of options on the wiki:
8// https://yalter.github.io/niri/Configuration:-Input
9
10prefer-no-csd
11
12input {
13 keyboard {
14 repeat-rate 50
15 repeat-delay 200
16 xkb {
17 }
18 numlock
19 }
20
21 touchpad {
22 tap
23 // dwt
24 // dwtp
25 // drag false
26 // drag-lock
27 // natural-scroll
28 // accel-speed 0.2
29 // accel-profile "flat"
30 // scroll-method "two-finger"
31 // disabled-on-external-mouse
32 }
33
34 mouse {
35 // off
36 // natural-scroll
37 accel-speed -0.65
38 accel-profile "flat"
39 // scroll-method "no-scroll"
40 }
41
42 trackpoint {
43 }
44
45 // Uncomment this to make the mouse warp to the center of newly focused windows.
46 // warp-mouse-to-focus
47
48 focus-follows-mouse max-scroll-amount="0%"
49}
50
51// https://yalter.github.io/niri/Configuration:-Outputs
52output "DP-1" {
53 // Uncomment this line to disable this output.
54 // off
55
56 mode "1920x1080@164.999"
57 scale 1
58 transform "normal"
59 position x=0 y=0
60}
61
62// Find more information on the wiki:
63// https://yalter.github.io/niri/Configuration:-Layout
64layout {
65 gaps 8
66
67 center-focused-column "never"
68
69 preset-column-widths {
70 proportion 0.33333
71 proportion 0.5
72 proportion 0.66667
73 }
74
75 default-column-width { proportion 0.5; }
76 focus-ring {
77 width 2
78
79 //catppuccin blue
80 active-color "#89b4fa"
81
82 //catppuccin surface-1
83 inactive-color "#45475a"
84 }
85
86 border {
87 off
88 width 1.5
89 //catppuccin yellow surface-1 red
90 active-color "#f9e2af"
91 inactive-color "#45475a"
92 urgent-color "#f38ba8"
93 }
94
95 shadow {
96 // on
97 softness 30
98 spread 5
99 offset x=0 y=5
100 color "#0007"
101 }
102
103 struts {
104 }
105}
106
107
108spawn-sh-at-startup "qs -c ~/.config/quickshell/noctalia-shell/"
109spawn-sh-at-startup "swaybg -i ~/.wallpaper/solace_mountain_night.png"
110
111
112hotkey-overlay {
113 skip-at-startup
114}
115
116
117screenshot-path null
118
119// https://yalter.github.io/niri/Configuration:-Animations
120animations {
121 // off
122}
123
124// https://yalter.github.io/niri/Configuration:-Window-Rules
125window-rule {
126 match app-id=r#"firefox$"# title="^Picture-in-Picture$"
127 open-floating true
128}
129window-rule {
130 match app-id=r#"firefox$"#
131 open-maximized true
132}
133window-rule {
134 match app-id=r#"discord$"#
135 open-maximized true
136 block-out-from "screen-capture"
137}
138window-rule {
139 match app-id=r#"jetbrains-idea$"#
140 open-maximized true
141}
142window-rule {
143 match app-id=r#"^org\.keepassxc\.KeePassXC$"#
144 block-out-from "screen-capture"
145}
146
147window-rule {
148 geometry-corner-radius 8
149 clip-to-geometry true
150}
151
152binds {
153 Mod+Shift+Slash { show-hotkey-overlay; }
154 Mod+Return hotkey-overlay-title="Open a Terminal: ghostty" { spawn "ghostty"; }
155 Mod+D hotkey-overlay-title="Run an Application: fuzzel" { spawn "fuzzel"; }
156 Super+Shift+L hotkey-overlay-title="Lock the Screen: swaylock" { spawn "swaylock"; }
157
158 XF86AudioRaiseVolume allow-when-locked=true { spawn-sh "wpctl set-volume @DEFAULT_AUDIO_SINK@ 0.1+"; }
159 XF86AudioLowerVolume allow-when-locked=true { spawn-sh "wpctl set-volume @DEFAULT_AUDIO_SINK@ 0.1-"; }
160 XF86AudioMute allow-when-locked=true { spawn-sh "wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle"; }
161 XF86AudioMicMute allow-when-locked=true { spawn-sh "wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle"; }
162
163 XF86MonBrightnessUp allow-when-locked=true { spawn "brightnessctl" "--class=backlight" "set" "+10%"; }
164 XF86MonBrightnessDown allow-when-locked=true { spawn "brightnessctl" "--class=backlight" "set" "10%-"; }
165
166 Mod+O repeat=false { toggle-overview; }
167 Mod+Q repeat=false { close-window; }
168
169 Mod+Left { focus-column-left; }
170 Mod+Down { focus-window-down; }
171 Mod+Up { focus-window-up; }
172 Mod+Right { focus-column-right; }
173
174 Mod+H { focus-column-left; }
175 Mod+U { focus-window-down; }
176 Mod+I { focus-window-up; }
177 Mod+L { focus-column-right; }
178
179 Mod+Ctrl+Left { move-column-left; }
180 Mod+Ctrl+Down { move-window-down; }
181 Mod+Ctrl+Up { move-window-up; }
182 Mod+Ctrl+Right { move-column-right; }
183 Mod+Ctrl+H { move-column-left; }
184 Mod+Ctrl+J { move-window-down; }
185 Mod+Ctrl+K { move-window-up; }
186 Mod+Ctrl+L { move-column-right; }
187
188 Mod+Home { focus-column-first; }
189 Mod+End { focus-column-last; }
190 Mod+Ctrl+Home { move-column-to-first; }
191 Mod+Ctrl+End { move-column-to-last; }
192
193 Mod+Shift+Left { focus-monitor-left; }
194 Mod+Shift+Down { focus-monitor-down; }
195 Mod+Shift+Up { focus-monitor-up; }
196 Mod+Shift+Right { focus-monitor-right; }
197 Mod+Shift+H { focus-monitor-left; }
198 Mod+Shift+U { focus-monitor-down; }
199 Mod+Shift+I { focus-monitor-up; }
200 Mod+Shift+L { focus-monitor-right; }
201
202 Mod+Shift+Ctrl+Left { move-column-to-monitor-left; }
203 Mod+Shift+Ctrl+Down { move-column-to-monitor-down; }
204 Mod+Shift+Ctrl+Up { move-column-to-monitor-up; }
205 Mod+Shift+Ctrl+Right { move-column-to-monitor-right; }
206 Mod+Shift+Ctrl+H { move-column-to-monitor-left; }
207 Mod+Shift+Ctrl+J { move-column-to-monitor-down; }
208 Mod+Shift+Ctrl+K { move-column-to-monitor-up; }
209 Mod+Shift+Ctrl+L { move-column-to-monitor-right; }
210
211 Mod+Page_Down { focus-workspace-down; }
212 Mod+Page_Up { focus-workspace-up; }
213 Mod+J { focus-workspace-down; }
214 Mod+K { focus-workspace-up; }
215 Mod+Shift+Page_Down { move-column-to-workspace-down; }
216 Mod+Shift+Page_Up { move-column-to-workspace-up; }
217 Mod+Shift+J { move-column-to-workspace-down; }
218 Mod+Shift+K { move-column-to-workspace-up; }
219
220 Mod+Ctrl+Page_Down { move-workspace-down; }
221 Mod+Ctrl+Page_Up { move-workspace-up; }
222 Mod+Ctrl+U { move-workspace-down; }
223 Mod+Ctrl+I { move-workspace-up; }
224
225 Mod+WheelScrollDown cooldown-ms=150 { focus-workspace-down; }
226 Mod+WheelScrollUp cooldown-ms=150 { focus-workspace-up; }
227 Mod+Ctrl+WheelScrollDown cooldown-ms=150 { move-column-to-workspace-down; }
228 Mod+Ctrl+WheelScrollUp cooldown-ms=150 { move-column-to-workspace-up; }
229
230 Mod+WheelScrollRight { focus-column-right; }
231 Mod+WheelScrollLeft { focus-column-left; }
232 Mod+Ctrl+WheelScrollRight { move-column-right; }
233 Mod+Ctrl+WheelScrollLeft { move-column-left; }
234
235 Mod+Shift+WheelScrollDown { focus-column-right; }
236 Mod+Shift+WheelScrollUp { focus-column-left; }
237 Mod+Ctrl+Shift+WheelScrollDown { move-column-right; }
238 Mod+Ctrl+Shift+WheelScrollUp { move-column-left; }
239
240 Mod+1 { focus-workspace 1; }
241 Mod+2 { focus-workspace 2; }
242 Mod+3 { focus-workspace 3; }
243 Mod+4 { focus-workspace 4; }
244 Mod+5 { focus-workspace 5; }
245 Mod+6 { focus-workspace 6; }
246 Mod+7 { focus-workspace 7; }
247 Mod+8 { focus-workspace 8; }
248 Mod+9 { focus-workspace 9; }
249
250 Mod+Shift+1 { move-column-to-workspace 1; }
251 Mod+Shift+2 { move-column-to-workspace 2; }
252 Mod+Shift+3 { move-column-to-workspace 3; }
253 Mod+Shift+4 { move-column-to-workspace 4; }
254 Mod+Shift+5 { move-column-to-workspace 5; }
255 Mod+Shift+6 { move-column-to-workspace 6; }
256 Mod+Shift+7 { move-column-to-workspace 7; }
257 Mod+Shift+8 { move-column-to-workspace 8; }
258 Mod+Shift+9 { move-column-to-workspace 9; }
259
260 Mod+BracketLeft { consume-or-expel-window-left; }
261 Mod+BracketRight { consume-or-expel-window-right; }
262 Mod+Comma { consume-window-into-column; }
263 Mod+Period { expel-window-from-column; }
264
265 Mod+R { switch-preset-column-width; }
266 Mod+Shift+R { switch-preset-window-height; }
267 Mod+Ctrl+R { reset-window-height; }
268 Mod+F { maximize-column; }
269 Mod+Shift+F { fullscreen-window; }
270
271 Mod+Ctrl+F { expand-column-to-available-width; }
272
273 Mod+C { center-column; }
274
275 Mod+Ctrl+C { center-visible-columns; }
276
277 Mod+Minus { set-column-width "-10%"; }
278 Mod+Equal { set-column-width "+10%"; }
279
280 Mod+Shift+Minus { set-window-height "-10%"; }
281 Mod+Shift+Equal { set-window-height "+10%"; }
282
283 Mod+V { toggle-window-floating; }
284 Mod+Shift+V { switch-focus-between-floating-and-tiling; }
285
286 Mod+W { toggle-column-tabbed-display; }
287
288 Mod+P {screenshot;}
289 Print { screenshot; }
290 Ctrl+Print { screenshot-screen; }
291 Alt+Print { screenshot-window; }
292
293 Mod+Escape allow-inhibiting=false { toggle-keyboard-shortcuts-inhibit; }
294
295 Mod+Shift+E { quit; }
296 Ctrl+Alt+Delete { quit; }
297
298 Mod+Shift+P { power-off-monitors; }
299}