···33// Check the wiki for a full description of the configuration:
44// https://github.com/YaLTeR/niri/wiki/Configuration:-Introduction
5566-// include "colors.kdl"
77-include "./dms/colors.kdl"
88-include "./dms/cursor.kdl"
99-include "./dms/wpblur.kdl"
66+include "colors.kdl"
10788+// Input device configuration.
99+// Find the full list of options on the wiki:
1110// https://github.com/YaLTeR/niri/wiki/Configuration:-Input
1211input {
1312 keyboard {
1413 xkb {
1414+ // You can set rules, model, layout, variant and options.
1515 // For more information, see xkeyboard-config(7).
1616 layout "us,us_intl"
1717 variant ",qwerty"
···66666767// You can configure outputs by their name, which you can find
6868// by running `niri msg outputs` while inside a niri instance.
6969+// The built-in laptop monitor is usually called "eDP-1".
7070+// Find more information on the wiki:
6971// https://github.com/YaLTeR/niri/wiki/Configuration:-Outputs
7272+// Remember to uncomment the node by removing "/-"!
7073output "DP-1" {
7174 // Uncomment this line to disable this output.
7275 // off
73767777+ // Resolution and, optionally, refresh rate of the output.
7878+ // The format is "<width>x<height>" or "<width>x<height>@<refresh rate>".
7479 // If the refresh rate is omitted, niri will pick the highest refresh rate
7580 // for the resolution.
7681 // If the mode is omitted altogether or is invalid, niri will pick one automatically.
8282+ // Run `niri msg outputs` while inside a niri instance to list all outputs and their modes.
7783 mode "3840x2160@240"
7878- // mode "3840x2160@119.880"
8484+ // mode "3840x2160@120"
79858086 // You can use integer or fractional scale, for example use 1.5 for 150% scale.
8187 scale 2
···9399 // so to put another output directly adjacent to it on the right, set its x to 1920.
94100 // If the position is unset or results in an overlap, the output is instead placed
95101 // automatically.
9696- // position x=2400 y=0
102102+ position x=2400 y=0
97103}
9810499105// Settings that influence how windows are positioned and sized.
100106// Find more information on the wiki:
101107// https://github.com/YaLTeR/niri/wiki/Configuration:-Layout
102108layout {
109109+ // Set gaps around windows in logical pixels.
103110 gaps 16
111111+112112+ // When to center a column when changing focus, options are:
113113+ // - "never", default behavior, focusing an off-screen column will keep at the left
114114+ // or right edge of the screen.
115115+ // - "always", the focused column will always be centered.
116116+ // - "on-overflow", focusing a column will center it if it doesn't fit
117117+ // together with the previously focused column.
104118 center-focused-column "on-overflow"
105119120120+ // You can customize the widths that "switch-preset-column-width" (Mod+R) toggles between.
106121 preset-column-widths {
122122+ // Proportion sets the width as a fraction of the output width, taking gaps into account.
123123+ // For example, you can perfectly fit four windows sized "proportion 0.25" on an output.
124124+ // The default preset widths are 1/3, 1/2 and 2/3 of the output.
107125 proportion 0.5
108108- proportion 0.66667
126126+ proportion 0.66667
109127 proportion 0.75
110128 proportion 0.95
111129···121139 // If you leave the brackets empty, the windows themselves will decide their initial width.
122140 // default-column-width {}
123141142142+ // By default focus ring and border are rendered as a solid background rectangle
143143+ // behind windows. That is, they will show up through semitransparent windows.
144144+ // This is because windows using client-side decorations can have an arbitrary shape.
145145+ //
146146+ // If you don't like that, you should uncomment `prefer-no-csd` below.
147147+ // Niri will draw focus ring and border *around* windows that agree to omit their
148148+ // client-side decorations.
149149+ //
150150+ // Alternatively, you can override it with a window rule called
151151+ // `draw-border-with-background`.
152152+124153 // You can change how the focus ring looks.
125154 focus-ring {
126155 // Uncomment this line to disable the focus ring.
···128157129158 // How many logical pixels the ring extends out from the windows.
130159 width 4
160160+161161+ // Colors can be set in a variety of ways:
162162+ // - CSS named colors: "red"
163163+ // - RGB hex: "#rgb", "#rgba", "#rrggbb", "#rrggbbaa"
164164+ // - CSS-like notation: "rgb(255, 127, 0)", rgba(), hsl() and a few others.
165165+166166+ // You can also use gradients. They take precedence over solid colors.
167167+ // Gradients are rendered the same as CSS linear-gradient(angle, from, to).
168168+ // The angle is the same as in linear-gradient, and is optional,
169169+ // defaulting to 180 (top-to-bottom gradient).
170170+ // You can use any CSS linear-gradient tool on the web to set these up.
171171+ // Changing the color space is also supported, check the wiki for more info.
172172+ //
173173+ // active-gradient from="#80c8ff" to="#bbddff" angle=45
174174+175175+ // You can also color the gradient relative to the entire view
176176+ // of the workspace, rather than relative to just the window itself.
177177+ // To do that, set relative-to="workspace-view".
178178+ //
179179+ // inactive-gradient from="#505050" to="#808080" angle=45 relative-to="workspace-view"
131180 }
132181133182 // You can also add a border. It's similar to the focus ring, but always visible.
···144193 // Uncomment the next line to enable shadows.
145194 // on
146195196196+ // By default, the shadow draws only around its window, and not behind it.
197197+ // Uncomment this setting to make the shadow draw behind its window.
198198+ //
199199+ // Note that niri has no way of knowing about the CSD window corner
200200+ // radius. It has to assume that windows have square corners, leading to
201201+ // shadow artifacts inside the CSD rounded corners. This setting fixes
202202+ // those artifacts.
203203+ //
204204+ // However, instead you may want to set prefer-no-csd and/or
205205+ // geometry-corner-radius. Then, niri will know the corner radius and
206206+ // draw the shadow correctly, without having to draw it behind the
207207+ // window. These will also remove client-side shadows if the window
208208+ // draws any.
209209+ //
210210+ // draw-behind-window true
211211+212212+ // You can change how shadows look. The values below are in logical
213213+ // pixels and match the CSS box-shadow properties.
214214+147215 // Softness controls the shadow blur radius.
148216 softness 30
149217···153221 // Offset moves the shadow relative to the window.
154222 offset x=0 y=5
155223 }
224224+225225+ // Struts shrink the area occupied by windows, similarly to layer-shell panels.
226226+ // You can think of them as a kind of outer gaps. They are set in logical pixels.
227227+ // Left and right struts will cause the next window to the side to always be visible.
228228+ // Top and bottom struts will simply add outer gaps in addition to the area occupied by
229229+ // layer-shell panels and regular gaps.
230230+ struts {
231231+ // left 64
232232+ // right 64
233233+ // top 64
234234+ // bottom 64
235235+ }
156236}
157237238238+// Add lines like this to spawn processes at startup.
239239+// Note that running niri as a session supports xdg-desktop-autostart,
240240+// which may be more convenient to use.
241241+// See the binds section below for more spawn examples.
242242+243243+// This line starts waybar, a commonly used bar for Wayland compositors.
158244spawn-at-startup "xwayland-satellite"
245245+spawn-at-startup "sh" "-c" "~/.config/niri/niri-watcher.sh"
246246+spawn-at-startup "sh" "-c" "niri-update-status"
159247160160-prefer-no-csd
248248+// Uncomment this line to ask the clients to omit their client-side decorations if possible.
249249+// If the client will specifically ask for CSD, the request will be honored.
250250+// Additionally, clients will be informed that they are tiled, removing some client-side rounded corners.
251251+// This option will also fix border/focus ring drawing behind some semitransparent windows.
252252+// After enabling or disabling this, you need to restart the apps for this to take effect.
253253+// prefer-no-csd
161254255255+// You can change the path where screenshots are saved.
256256+// A ~ at the front will be expanded to the home directory.
257257+// The path is formatted with strftime(3) to give you the screenshot date and time.
162258screenshot-path "~/Pictures/Screenshots/Screenshot from %Y-%m-%d %H-%M-%S.png"
259259+260260+// You can also set this to null to disable saving screenshots to disk.
261261+// screenshot-path null
163262164263// Animation settings.
165264// The wiki explains how to configure individual animations:
···208307 block-out-from "screen-capture"
209308}
210309211211-// Block out legcord from screen capture.
310310+212311window-rule {
213312 match app-id=r#"legcord$"#
214313 // block-out-from "screencast"
···220319 default-floating-position x=10 y=10 relative-to="bottom-right"
221320}
222321322322+// Example: block out two password managers from screen capture.
323323+// (This example rule is commented out with a "/-" in front.)
324324+/-window-rule {
325325+ match app-id=r#"^org\.keepassxc\.KeePassXC$"#
326326+ match app-id=r#"^org\.gnome\.World\.Secrets$"#
327327+328328+ block-out-from "screen-capture"
329329+330330+ // Use this instead if you want them visible on third-party screenshot tools.
331331+ // block-out-from "screencast"
332332+}
333333+223334// Example: enable rounded corners for all windows.
224335// (This example rule is commented out with a "/-" in front.)
225336window-rule {
···227338 clip-to-geometry true
228339}
229340230230-hotkey-overlay {
231231- skip-at-startup
232232-}
341341+binds {
342342+ // Keys consist of modifiers separated by + signs, followed by an XKB key name
343343+ // in the end. To find an XKB name for a particular key, you may use a program
344344+ // like wev.
345345+ //
346346+ // "Mod" is a special modifier equal to Super when running on a TTY, and to Alt
347347+ // when running as a winit window.
348348+ //
349349+ // Most actions that you can bind here can also be invoked programmatically with
350350+ // `niri msg action do-something`.
233351234234-binds {
235235- Mod+Shift+Slash { show-hotkey-overlay; }
352352+ // Mod-Shift-/, which is usually the same as Mod-?,
353353+ // shows a list of important hotkeys.
354354+ Mod+Shift+Slash { show-hotkey-overlay; }
236355237356 // APPLICATIONS
238238- Mod+T hotkey-overlay-title="Open a Terminal: Ghostty" { spawn "ghostty"; }
357357+ Mod+T hotkey-overlay-title="Open a Terminal: Ghostty" { spawn "ghostty"; }
239358 Super+E hotkey-overlay-title="Open Nautilus" { spawn "nautilus"; }
240359241360 // SCRIPTS
242242- Super+B { spawn "sh" "-c" "dms ipc call wallpaper set $(~/scripts/random-wallpaper.sh)"; }
243243- Super+Shift+D hotkey-overlay-title="Restart DMS" { spawn "sh" "-c" "dms restart" ; }
361361+ Super+B { spawn "sh" "-c" "matugen image $(~/scripts/random-wallpaper.sh)"; }
362362+ Super+Shift+W hotkey-overlay-title="Restart Waybar" { spawn "sh" "-c" "killall waybar ; sleep 0.1 ; waybar & disown
363363+" ; }
244364 // Super+A hotkey-overlay-title="Capture Screen" { spawn "sh" "-c" "grim -g \"$(slurp; sleep .1)\" - | swappy -f -"; }
245365 Super+M hotkey-overlay-title="Media Output Select" { spawn "sh" "-c" "~/scripts/rofi-media.sh"; }
246366 Super+Semicolon hotkey-overlay-title="Emoji picker" { spawn "sh" "-c" "rofimoji"; }
367367+247368248369 XF86AudioPlay allow-when-locked=true { spawn "playerctl" "play-pause"; }
249370 XF86AudioNext allow-when-locked=true { spawn "playerctl" "next"; }
250371 XF86AudioPrev allow-when-locked=true { spawn "playerctl" "previous"; }
251251-372372+ // Open/close the Overview: a zoomed-out view of workspaces and windows.
373373+ // You can also move the mouse into the top-left hot corner,
374374+ // or do a four-finger swipe up on a touchpad.
252375 Mod+O repeat=false { toggle-overview; }
253376254377 Mod+Q { close-window; }
255378256379 Mod+Left { focus-column-left; }
257257- Mod+Down { focus-window-or-workspace-down; }
258258- Mod+Up { focus-window-or-workspace-up; }
380380+ Mod+Down { focus-window-down; }
381381+ Mod+Up { focus-window-up; }
259382 Mod+Right { focus-column-right; }
260383 // Mod+H { focus-column-left; }
261384 // Mod+J { focus-window-down; }
···466589467590 // The quit action will show a confirmation dialog to avoid accidental exits.
468591 Mod+Shift+E { quit; }
592592+ Ctrl+Alt+Delete { quit; }
469593470594 // Powers off the monitors. To turn them back on, do any input like
471595 // moving the mouse or pressing any other key.
472596 Mod+Shift+P { power-off-monitors; }
473597474474- // DMS
475475- Mod+Space hotkey-overlay-title="Application Launcher" {
476476- spawn "dms" "ipc" "call" "spotlight" "toggle";
477477- }
478478- Mod+Ctrl+V hotkey-overlay-title="Clipboard Manager" {
479479- spawn "dms" "ipc" "call" "clipboard" "toggle";
480480- }
481481- Mod+Shift+M hotkey-overlay-title="Task Manager" {
482482- spawn "dms" "ipc" "call" "processlist" "toggle";
483483- }
484484- Ctrl+Alt+Delete hotkey-overlay-title="Task Manager" {
485485- spawn "dms" "ipc" "call" "processlist" "toggle";
486486- }
487487- Mod+N hotkey-overlay-title="Notification Center" {
488488- spawn "dms" "ipc" "call" "notifications" "toggle";
489489- }
490490- Mod+Shift+Comma hotkey-overlay-title="Settings" {
491491- spawn "dms" "ipc" "call" "settings" "toggle";
492492- }
493493- Mod+Y hotkey-overlay-title="Browse Wallpapers" {
494494- spawn "dms" "ipc" "call" "dankdash" "wallpaper";
495495- }
496496- // Mod+Shift+N hotkey-overlay-title="Notepad" {
497497- // spawn "dms" "ipc" "call" "notepad" "toggle";
498498- // }
499499- Super+L hotkey-overlay-title="Lock Screen" {
500500- spawn "dms" "ipc" "call" "lock" "lock";
501501- }
502502- Mod+X hotkey-overlay-title="Power Menu" {
503503- spawn "dms" "ipc" "call" "powermenu" "toggle";
504504- }
505505- XF86AudioRaiseVolume allow-when-locked=true {
506506- spawn "dms" "ipc" "call" "audio" "increment" "3";
507507- }
508508- XF86AudioLowerVolume allow-when-locked=true {
509509- spawn "dms" "ipc" "call" "audio" "decrement" "3";
510510- }
511511- XF86AudioMute allow-when-locked=true {
512512- spawn "dms" "ipc" "call" "audio" "mute";
513513- }
514514- XF86AudioMicMute allow-when-locked=true {
515515- spawn "dms" "ipc" "call" "audio" "micmute";
516516- }
517517- XF86MonBrightnessUp allow-when-locked=true {
518518- spawn "dms" "ipc" "call" "brightness" "increment" "5" "";
519519- }
520520- // You can override the default device for e.g. keyboards by adding the device name to the last param
521521- XF86MonBrightnessDown allow-when-locked=true {
522522- spawn "dms" "ipc" "call" "brightness" "decrement" "5" "";
523523- }
524524- // Night mode toggle
525525- Mod+Shift+N allow-when-locked=true {
526526- spawn "dms" "ipc" "call" "night" "toggle";
527527- }
598598+ Mod+Space hotkey-overlay-title="Application Launcher" {
599599+ spawn "dms" "ipc" "call" "spotlight" "toggle";
600600+ }
601601+ Mod+Ctrl+V hotkey-overlay-title="Clipboard Manager" {
602602+ spawn "dms" "ipc" "call" "clipboard" "toggle";
603603+ }
604604+ Mod+Shift+M hotkey-overlay-title="Task Manager" {
605605+ spawn "dms" "ipc" "call" "processlist" "toggle";
606606+ }
607607+ Mod+N hotkey-overlay-title="Notification Center" {
608608+ spawn "dms" "ipc" "call" "notifications" "toggle";
609609+ }
610610+ Mod+Shift+Comma hotkey-overlay-title="Settings" {
611611+ spawn "dms" "ipc" "call" "settings" "toggle";
612612+ }
613613+ // Mod+P hotkey-overlay-title="Notepad" {
614614+ // spawn "dms" "ipc" "call" "notepad" "toggle";
615615+ // }
616616+ Super+L hotkey-overlay-title="Lock Screen" {
617617+ spawn "dms" "ipc" "call" "lock" "lock";
618618+ }
619619+ Mod+X hotkey-overlay-title="Power Menu" {
620620+ spawn "dms" "ipc" "call" "powermenu" "toggle";
621621+ }
622622+ XF86AudioRaiseVolume allow-when-locked=true {
623623+ spawn "dms" "ipc" "call" "audio" "increment" "3";
624624+ }
625625+ XF86AudioLowerVolume allow-when-locked=true {
626626+ spawn "dms" "ipc" "call" "audio" "decrement" "3";
627627+ }
628628+ XF86AudioMute allow-when-locked=true {
629629+ spawn "dms" "ipc" "call" "audio" "mute";
630630+ }
631631+ XF86AudioMicMute allow-when-locked=true {
632632+ spawn "dms" "ipc" "call" "audio" "micmute";
633633+ }
634634+ XF86MonBrightnessUp allow-when-locked=true {
635635+ spawn "dms" "ipc" "call" "brightness" "increment" "5" "";
636636+ }
637637+ // You can override the default device for e.g. keyboards by adding the device name to the last param
638638+ XF86MonBrightnessDown allow-when-locked=true {
639639+ spawn "dms" "ipc" "call" "brightness" "decrement" "5" "";
640640+ }
641641+ // Night mode toggle
642642+ Mod+Shift+N allow-when-locked=true {
643643+ spawn "dms" "ipc" "call" "night" "toggle";
644644+ }
528645}
529646530647environment {
···536653}
537654538655cursor {
539539- hide-when-typing
656656+ xcursor-theme "Adwaita"
657657+ xcursor-size 28
658658+659659+ // hide-when-typing
540660 // hide-after-inactive-ms 1000
541661}
542662···546666// Recommended (must install polkit-mate before hand) for elevation prompts
547667spawn-at-startup "/usr/lib/mate-polkit/polkit-mate-authentication-agent-1"
548668// This may be a different path on different distributions, the above is for the arch linux mate-polkit package
669669+670670+// Starts DankShell
671671+spawn-at-startup "dms" "run"
549672550673// If using niri newer than 271534e115e5915231c99df287bbfe396185924d (~aug 17 2025)
551674// you can add this to disable built in config load errors since dank shell provides this
+1-1
private_dot_config/nvim/lua/plugins/alpha.lua
···2929 -- Randomly select a header
3030 math.randomseed(os.time()) -- Initialize random seed
3131 local random_header = headers[math.random(#headers)]
3232- local random_header = "outer_wilds"
3232+ -- local random_header = "bee"
33333434 -- Construct the full path and require the header
3535 local header = "plugins.alpha_headers." .. random_header
···8787 use_default_keymaps = true,
8888 view_options = {
8989 -- Show files and directories that start with "."
9090- show_hidden = true,
9090+ show_hidden = false,
9191 -- This function defines what is considered a "hidden" file
9292 is_hidden_file = function(name, bufnr)
9393 local m = name:match("^%.")