···33// Check the wiki for a full description of the configuration:
44// https://github.com/YaLTeR/niri/wiki/Configuration:-Introduction
5566-include "colors.kdl"
66+// include "colors.kdl"
77+include "./dms/colors.kdl"
88+include "./dms/cursor.kdl"
99+include "./dms/wpblur.kdl"
71088-// Input device configuration.
99-// Find the full list of options on the wiki:
1011// https://github.com/YaLTeR/niri/wiki/Configuration:-Input
1112input {
1213 keyboard {
1314 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:
7169// https://github.com/YaLTeR/niri/wiki/Configuration:-Outputs
7272-// Remember to uncomment the node by removing "/-"!
7370output "DP-1" {
7471 // Uncomment this line to disable this output.
7572 // off
76737777- // Resolution and, optionally, refresh rate of the output.
7878- // The format is "<width>x<height>" or "<width>x<height>@<refresh rate>".
7974 // If the refresh rate is omitted, niri will pick the highest refresh rate
8075 // for the resolution.
8176 // 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.
8377 mode "3840x2160@240"
8484- // mode "3840x2160@120"
7878+ // mode "3840x2160@119.880"
85798680 // You can use integer or fractional scale, for example use 1.5 for 150% scale.
8781 scale 2
···9993 // so to put another output directly adjacent to it on the right, set its x to 1920.
10094 // If the position is unset or results in an overlap, the output is instead placed
10195 // automatically.
102102- position x=2400 y=0
9696+ // position x=2400 y=0
10397}
1049810599// Settings that influence how windows are positioned and sized.
106100// Find more information on the wiki:
107101// https://github.com/YaLTeR/niri/wiki/Configuration:-Layout
108102layout {
109109- // Set gaps around windows in logical pixels.
110103 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.
118104 center-focused-column "on-overflow"
119105120120- // You can customize the widths that "switch-preset-column-width" (Mod+R) toggles between.
121106 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.
125107 proportion 0.5
126126- proportion 0.66667
108108+ proportion 0.66667
127109 proportion 0.75
128110 proportion 0.95
129111···139121 // If you leave the brackets empty, the windows themselves will decide their initial width.
140122 // default-column-width {}
141123142142- // 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-153124 // You can change how the focus ring looks.
154125 focus-ring {
155126 // Uncomment this line to disable the focus ring.
···157128158129 // How many logical pixels the ring extends out from the windows.
159130 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"
180131 }
181132182133 // You can also add a border. It's similar to the focus ring, but always visible.
···193144 // Uncomment the next line to enable shadows.
194145 // on
195146196196- // 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-215147 // Softness controls the shadow blur radius.
216148 softness 30
217149···221153 // Offset moves the shadow relative to the window.
222154 offset x=0 y=5
223155 }
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- }
236156}
237157238238-// 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.
244158spawn-at-startup "xwayland-satellite"
245245-spawn-at-startup "sh" "-c" "~/.config/niri/niri-watcher.sh"
246246-spawn-at-startup "sh" "-c" "niri-update-status"
247159248248-// 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
160160+prefer-no-csd
254161255255-// 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.
258162screenshot-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
262163263164// Animation settings.
264165// The wiki explains how to configure individual animations:
···307208 block-out-from "screen-capture"
308209}
309210310310-211211+// Block out legcord from screen capture.
311212window-rule {
312213 match app-id=r#"legcord$"#
313214 // block-out-from "screencast"
···319220 default-floating-position x=10 y=10 relative-to="bottom-right"
320221}
321222322322-// 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-334223// Example: enable rounded corners for all windows.
335224// (This example rule is commented out with a "/-" in front.)
336225window-rule {
···338227 clip-to-geometry true
339228}
340229230230+hotkey-overlay {
231231+ skip-at-startup
232232+}
233233+341234binds {
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`.
351351-352352- // Mod-Shift-/, which is usually the same as Mod-?,
353353- // shows a list of important hotkeys.
354354- Mod+Shift+Slash { show-hotkey-overlay; }
235235+ Mod+Shift+Slash { show-hotkey-overlay; }
355236356237 // APPLICATIONS
357357- Mod+T hotkey-overlay-title="Open a Terminal: Ghostty" { spawn "ghostty"; }
238238+ Mod+T hotkey-overlay-title="Open a Terminal: Ghostty" { spawn "ghostty"; }
358239 Super+E hotkey-overlay-title="Open Nautilus" { spawn "nautilus"; }
359240360241 // SCRIPTS
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-" ; }
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" ; }
364244 // Super+A hotkey-overlay-title="Capture Screen" { spawn "sh" "-c" "grim -g \"$(slurp; sleep .1)\" - | swappy -f -"; }
365245 Super+M hotkey-overlay-title="Media Output Select" { spawn "sh" "-c" "~/scripts/rofi-media.sh"; }
366246 Super+Semicolon hotkey-overlay-title="Emoji picker" { spawn "sh" "-c" "rofimoji"; }
367367-368247369248 XF86AudioPlay allow-when-locked=true { spawn "playerctl" "play-pause"; }
370249 XF86AudioNext allow-when-locked=true { spawn "playerctl" "next"; }
371250 XF86AudioPrev allow-when-locked=true { spawn "playerctl" "previous"; }
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.
251251+375252 Mod+O repeat=false { toggle-overview; }
376253377254 Mod+Q { close-window; }
378255379256 Mod+Left { focus-column-left; }
380380- Mod+Down { focus-window-down; }
381381- Mod+Up { focus-window-up; }
257257+ Mod+Down { focus-window-or-workspace-down; }
258258+ Mod+Up { focus-window-or-workspace-up; }
382259 Mod+Right { focus-column-right; }
383260 // Mod+H { focus-column-left; }
384261 // Mod+J { focus-window-down; }
···589466590467 // The quit action will show a confirmation dialog to avoid accidental exits.
591468 Mod+Shift+E { quit; }
592592- Ctrl+Alt+Delete { quit; }
593469594470 // Powers off the monitors. To turn them back on, do any input like
595471 // moving the mouse or pressing any other key.
596472 Mod+Shift+P { power-off-monitors; }
597473598598- 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- }
474474+ // 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+ }
645528}
646529647530environment {
···653536}
654537655538cursor {
656656- xcursor-theme "Adwaita"
657657- xcursor-size 28
658658-659659- // hide-when-typing
539539+ hide-when-typing
660540 // hide-after-inactive-ms 1000
661541}
662542···666546// Recommended (must install polkit-mate before hand) for elevation prompts
667547spawn-at-startup "/usr/lib/mate-polkit/polkit-mate-authentication-agent-1"
668548// 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"
672549673550// If using niri newer than 271534e115e5915231c99df287bbfe396185924d (~aug 17 2025)
674551// 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 = "bee"
3232+ local random_header = "outer_wilds"
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 = false,
9090+ show_hidden = true,
9191 -- This function defines what is considered a "hidden" file
9292 is_hidden_file = function(name, bufnr)
9393 local m = name:match("^%.")