home-manager @ d300a8d63146bcf6387bd76ea5723495c9b52066

  1{
  2  pkgs,
  3  inputs,
  4  ...
  5}: {
  6  xdg.configFile."niri/config.kdl".text = ''
  7    gestures {
  8        hot-corners {
  9            off
 10        }
 11    }
 12
 13    input {
 14        keyboard {
 15            xkb {
 16                layout "us,de"
 17            }
 18        }
 19
 20        touchpad {
 21            tap
 22            natural-scroll
 23        }
 24    }
 25
 26    output "eDP-1" {
 27        mode "3840x2160@60.000"
 28    }
 29
 30    output "LG Electronics LG HDR 4K 0x0001A8D9" {
 31        mode "3840x2160@60.000"
 32    }
 33
 34    layout {
 35        gaps 0
 36        center-focused-column "never"
 37        preset-column-widths {
 38            proportion 0.33333
 39            proportion 0.5
 40            proportion 0.66667
 41        }
 42        default-column-width {
 43            proportion 0.5
 44        }
 45        focus-ring {
 46            off
 47        }
 48        struts {
 49            right 10
 50        }
 51
 52        border {
 53            width 3
 54            active-color "#7fc8ff"
 55            inactive-color "#DDDDDD"
 56        }
 57    }
 58
 59    overview {
 60        backdrop-color "#DDDDDD"
 61    }
 62
 63    spawn-at-startup "dbus-update-activation-environment" "WAYLAND_DISPLAY" "XDG_CURRENT_DESKTOP=niri"
 64    spawn-at-startup "openrc" "--user" "gui"
 65
 66    spawn-at-startup "blueman-applet"
 67    spawn-at-startup "mako"
 68    spawn-at-startup "nm-applet"
 69    spawn-at-startup "swaybg" "-c" "DDDDDD"
 70    spawn-at-startup "waybar"
 71
 72    spawn-at-startup "xwayland-satellite" ":12"
 73    environment {
 74        DISPLAY ":12"
 75    }
 76
 77    spawn-at-startup "flatpak" "run" "com.slack.Slack"
 78    spawn-at-startup "telegram-desktop"
 79
 80    prefer-no-csd
 81
 82    screenshot-path "~/Pictures/Screenshots/Screenshot from %Y-%m-%d %H-%M-%S.png"
 83
 84
 85    binds {
 86        Mod+Shift+Slash { show-hotkey-overlay; }
 87
 88        Mod+T { spawn "ghostty"; }
 89        Mod+D { spawn "wofi" "--show" "run"; }
 90        Mod+O repeat=false { toggle-overview; }
 91        Mod+Shift+D { spawn "wofi" "--show" "drun"; }
 92        Super+Alt+L { spawn "swaylock"; }
 93
 94        Mod+Shift+Q { close-window; }
 95
 96        Mod+H     { focus-column-left; }
 97        Mod+J     { focus-window-or-workspace-down; }
 98        Mod+K     { focus-window-or-workspace-up; }
 99        Mod+L     { focus-column-right; }
100
101        Mod+Ctrl+H     { move-column-left; }
102        Mod+Ctrl+J         { move-workspace-down; }
103        Mod+Ctrl+K         { move-workspace-up; }
104        Mod+Ctrl+L     { move-column-right; }
105
106        Mod+Home { focus-column-first; }
107        Mod+End  { focus-column-last; }
108        Mod+Ctrl+Home { move-column-to-first; }
109        Mod+Ctrl+End  { move-column-to-last; }
110
111        Mod+Shift+H     { focus-monitor-left; }
112        Mod+Shift+J     { focus-monitor-down; }
113        Mod+Shift+K     { focus-monitor-up; }
114        Mod+Shift+L     { focus-monitor-right; }
115
116        Mod+Shift+Ctrl+H     { move-column-to-monitor-left; }
117        Mod+Shift+Ctrl+J     { move-column-to-monitor-down; }
118        Mod+Shift+Ctrl+K     { move-column-to-monitor-up; }
119        Mod+Shift+Ctrl+L     { move-column-to-monitor-right; }
120
121        // Alternatively, there are commands to move just a single window:
122        // Mod+Shift+Ctrl+Left  { move-window-to-monitor-left; }
123        // ...
124
125        // And you can also move a whole workspace to another monitor:
126        Mod+Shift+Ctrl+U  { move-workspace-to-monitor-left; }
127        Mod+Shift+Ctrl+I  { move-workspace-to-monitor-right; }
128        // ...
129
130        Mod+Page_Down      { focus-workspace-down; }
131        Mod+Page_Up        { focus-workspace-up; }
132        Mod+Ctrl+Page_Down { move-column-to-workspace-down; }
133        Mod+Ctrl+Page_Up   { move-column-to-workspace-up; }
134        Mod+Ctrl+U         { move-column-to-workspace-down; }
135        Mod+Ctrl+I         { move-column-to-workspace-up; }
136
137        Mod+Shift+Page_Down { move-workspace-down; }
138        Mod+Shift+Page_Up   { move-workspace-up; }
139        Mod+Shift+U         { move-workspace-down; }
140        Mod+Shift+I         { move-workspace-up; }
141
142        Mod+WheelScrollDown      cooldown-ms=150 { focus-workspace-down; }
143        Mod+WheelScrollUp        cooldown-ms=150 { focus-workspace-up; }
144        Mod+Ctrl+WheelScrollDown cooldown-ms=150 { move-column-to-workspace-down; }
145        Mod+Ctrl+WheelScrollUp   cooldown-ms=150 { move-column-to-workspace-up; }
146
147        Mod+WheelScrollRight      { focus-column-right; }
148        Mod+WheelScrollLeft       { focus-column-left; }
149        Mod+Ctrl+WheelScrollRight { move-column-right; }
150        Mod+Ctrl+WheelScrollLeft  { move-column-left; }
151
152        Mod+Shift+WheelScrollDown      { focus-column-right; }
153        Mod+Shift+WheelScrollUp        { focus-column-left; }
154        Mod+Ctrl+Shift+WheelScrollDown { move-column-right; }
155        Mod+Ctrl+Shift+WheelScrollUp   { move-column-left; }
156
157        Mod+S { set-dynamic-cast-window; }
158        Mod+Shift+S { set-dynamic-cast-monitor; }
159        Mod+Ctrl+S { clear-dynamic-cast-target; }
160
161        Mod+1 { focus-workspace "α"; }
162        Mod+2 { focus-workspace "γ"; }
163        Mod+3 { focus-workspace "δ"; }
164        Mod+4 { focus-workspace "ε"; }
165        Mod+5 { focus-workspace "ζ"; }
166        Mod+6 { focus-workspace "6"; }
167        Mod+7 { focus-workspace "7"; }
168        Mod+8 { focus-workspace "8"; }
169        Mod+9 { focus-workspace "9"; }
170        Mod+Minus { focus-workspace "-"; }
171        Mod+Ctrl+1 { move-column-to-workspace "α"; }
172        Mod+Ctrl+2 { move-column-to-workspace "γ"; }
173        Mod+Ctrl+3 { move-column-to-workspace "δ"; }
174        Mod+Ctrl+4 { move-column-to-workspace "ε"; }
175        Mod+Ctrl+5 { move-column-to-workspace "ζ"; }
176        Mod+Ctrl+6 { move-column-to-workspace "6"; }
177        Mod+Ctrl+7 { move-column-to-workspace "7"; }
178        Mod+Ctrl+8 { move-column-to-workspace "8"; }
179        Mod+Ctrl+9 { move-column-to-workspace "9"; }
180        Mod+Ctrl+Minus { move-column-to-workspace "-"; }
181
182        Mod+BracketLeft  { consume-or-expel-window-left; }
183        Mod+BracketRight { consume-or-expel-window-right; }
184
185        Mod+Comma  { consume-window-into-column; }
186        Mod+Period { expel-window-from-column; }
187
188        Mod+R { switch-preset-column-width; }
189        Mod+Shift+R { switch-preset-window-height; }
190        Mod+Ctrl+R { reset-window-height; }
191        Mod+F { maximize-column; }
192        Mod+Shift+F { fullscreen-window; }
193
194        Mod+Ctrl+F { expand-column-to-available-width; }
195
196        Mod+C { center-column; }
197
198        Mod+U { set-column-width "-10%"; }
199        Mod+I { set-column-width "+10%"; }
200
201        // Finer height adjustments when in column with other windows.
202        Mod+Shift+Minus { set-window-height "-10%"; }
203        Mod+Shift+Equal { set-window-height "+10%"; }
204
205        Mod+V       { toggle-window-floating; }
206        Mod+Shift+V { switch-focus-between-floating-and-tiling; }
207
208        Mod+W { toggle-column-tabbed-display; }
209
210        Mod+p { screenshot; }
211
212        Mod+Escape allow-inhibiting=false { toggle-keyboard-shortcuts-inhibit; }
213
214        Mod+Shift+E { quit; }
215
216        Mod+Shift+P { power-off-monitors; }
217    }
218
219    workspace "α" {
220    }
221
222    workspace "γ" {
223    }
224
225    workspace "δ" {
226    }
227
228    workspace "ε" {
229    }
230
231    workspace "ζ" {
232    }
233
234    workspace "6" {
235    }
236
237    workspace "7" {
238    }
239
240    workspace "8" {
241    }
242
243    workspace "9" {
244    }
245
246    workspace "-" {
247    }
248
249    window-rule {
250        match app-id=r#"^com\.slack\.Slack$"#
251
252        open-on-workspace "chat"
253        block-out-from "screencast"
254    }
255
256    window-rule {
257        match app-id=r#"^org\.telegram\.desktop$"#
258
259        open-on-workspace "ζ"
260        block-out-from "screencast"
261    }
262
263    window-rule {
264        match app-id=r#"^firefox$"#
265
266        block-out-from "screencast"
267    }
268
269    window-rule {
270        match app-id=r#"^Bitwarden$"#
271
272        open-on-workspace "res"
273        block-out-from "screencast"
274    }
275
276
277    window-rule {
278        match app-id=r#"^org\.pulseaudio\.pavucontrol$"#
279        match app-id=r#"^blueman\-manager$"#
280
281        open-floating true
282    }
283
284
285    layer-rule {
286        match namespace="^notifications$"
287        block-out-from "screencast"
288    }
289
290    layer-rule {
291        match namespace="^waybar$"
292        block-out-from "screencast"
293    }
294
295
296    window-rule {
297        match is-window-cast-target=true
298
299        focus-ring {
300            active-color "#f38ba8"
301            inactive-color "#7d0d2d"
302        }
303
304        border {
305            inactive-color "#7d0d2d"
306        }
307
308        shadow {
309            color "#7d0d2d70"
310        }
311
312        tab-indicator {
313            active-color "#f38ba8"
314            inactive-color "#7d0d2d"
315        }
316    }
317
318    // user private to hide private browser
319    // altgr-intl
320  '';
321}