spawn-at-startup "waybar" spawn-sh-at-startup "swaybg -m fit -i ~/Pictures/backgrounds/hibiscus-flowers-5k-5120x2880-16240.jpg" spawn-at-startup "dunst" spawn-at-startup "kwalletd6" spawn-at-startup "polkit-kde-authentication-agent-1" spawn-at-startup "plasma-polkit-agent" spawn-sh-at-startup "wl-paste --watch cliphist store" spawn-at-startup "NetworkManager" spawn-at-startup "nm-applet" spawn-at-startup "nextcloud" "--background" spawn-at-startup "syncthing" workspace "1" workspace "2" workspace "3" workspace "Comms" workspace "Music" workspace "Gaming" include "monitors.kdl" include "binds.kdl" include "windowrules.kdl" environment { GSK_RENDERER "ngl" DISPLAY ":1" GDK_BACKEND "wayland,x11" QT_QPA_PLATFORM "wayland" QT_QPA_PLATFORMTHEME "qt6ct" QT_WAYLAND_DISABLE_WINDOWDECORATION "1" QT_AUTO_SCREEN_SCALE_FACTOR "1" } input { focus-follows-mouse max-scroll-amount="10%" workspace-auto-back-and-forth // makes any workspace a (monitor-bound) "scratchpad" keyboard { xkb { layout "gb" // options "grp:win_space_toggle,compose:ralt,ctrl:nocaps" model "pc105" options "caps:escape" } repeat-rate 45 repeat-delay 300 } touchpad { // off tap dwt // dwtp // drag-lock natural-scroll accel-speed 0.05 accel-profile "adaptive" // scroll-method "two-finger" // disabled-on-external-mouse click-method "clickfinger" } mouse { // off // natural-scroll accel-speed -0.2 accel-profile "flat" // scroll-method "no-scroll" } trackpoint { // off // natural-scroll // accel-speed 0.2 // accel-profile "flat" // scroll-method "on-button-down" // scroll-button 273 // middle-emulation } // Uncomment this to make the mouse warp to the center of newly focused windows. // warp-mouse-to-focus // Focus windows and outputs automatically when moving the mouse into them. // Setting max-scroll-amount="0%" makes it work only on windows already fully on screen. // focus-follows-mouse max-scroll-amount="0%" } // Settings that influence how windows are positioned and sized. // Find more information on the wiki: // https://github.com/YaLTeR/niri/wiki/Configuration:-Layout layout { // Set gaps around windows in logical pixels. gaps 5 // When to center a column when changing focus, options are: // - "never", default behavior, focusing an off-screen column will keep at the left // or right edge of the screen. // - "always", the focused column will always be centered. // - "on-overflow", focusing a column will center it if it doesn't fit // together with the previously focused column. center-focused-column "never" always-center-single-column default-column-display "normal" //rather tahn tabbed // empty-workspace-above-first // You can customize the widths that "switch-preset-column-width" (Mod+R) toggles between. preset-column-widths { // Proportion sets the width as a fraction of the output width, taking gaps into account. // For example, you can perfectly fit four windows sized "proportion 0.25" on an output. // The default preset widths are 1/3, 1/2 and 2/3 of the output. // proportion 0.25 proportion 0.33333 proportion 0.5 proportion 0.66667 // Fixed sets the width in logical pixels exactly. // fixed 1920 } // You can also customize the heights that "switch-preset-window-height" (Mod+Shift+R) toggles between. preset-window-heights { // proportion 0.33 proportion 0.5 // proportion 0.67 proportion 1.0 } // You can change the default width of the new windows. default-column-width { proportion 0.667; } // If you leave the brackets empty, the windows themselves will decide their initial width. // default-column-width {} // By default focus ring and border are rendered as a solid background rectangle // behind windows. That is, they will show up through semitransparent windows. // This is because windows using client-side decorations can have an arbitrary shape. // // If you don't like that, you should uncomment `prefer-no-csd` below. // Niri will draw focus ring and border *around* windows that agree to omit their // client-side decorations. // // Alternatively, you can override it with a window rule called // `draw-border-with-background`. // You can change how the focus ring looks. focus-ring { // Uncomment this line to disable the focus ring. // off // How many logical pixels the ring extends out from the windows. width 2 // Colors can be set in a variety of ways: // - CSS named colors: "red" // - RGB hex: "#rgb", "#rgba", "#rrggbb", "#rrggbbaa" // - CSS-like notation: "rgb(255, 127, 0)", rgba(), hsl() and a few others. // Color of the ring on the active monitor. // active-color "#7fc8ff" active-gradient from="#066dff" to="#00ff99" angle=45 relative-to="workspace-view" // active-gradient from="#a0008d" to="#33ccff" angle=45 relative-to="workspace-view" // Color of the ring on inactive monitors. inactive-color "#505050" // You can also use gradients. They take precedence over solid colors. // Gradients are rendered the same as CSS linear-gradient(angle, from, to). // The angle is the same as in linear-gradient, and is optional, // defaulting to 180 (top-to-bottom gradient). // You can use any CSS linear-gradient tool on the web to set these up. // Changing the color space is also supported, check the wiki for more info. // // active-gradient from="#80c8ff" to="#bbddff" angle=45 // You can also color the gradient relative to the entire view // of the workspace, rather than relative to just the window itself. // To do that, set relative-to="workspace-view". // // inactive-gradient from="#505050" to="#808080" angle=45 relative-to="workspace-view" } // You can also add a border. It's similar to the focus ring, but always visible. border { // The settings are the same as for the focus ring. // If you enable the border, you probably want to disable the focus ring. off width 4 active-color "#ffc87f" inactive-color "#505050" // active-gradient from="#ffbb66" to="#ffc880" angle=45 relative-to="workspace-view" // inactive-gradient from="#505050" to="#808080" angle=45 relative-to="workspace-view" } tab-indicator { gap 4 width 2 } // You can enable drop shadows for windows. shadow { // Uncomment the next line to enable shadows. // on // By default, the shadow draws only around its window, and not behind it. // Uncomment this setting to make the shadow draw behind its window. // // Note that niri has no way of knowing about the CSD window corner // radius. It has to assume that windows have square corners, leading to // shadow artifacts inside the CSD rounded corners. This setting fixes // those artifacts. // // However, instead you may want to set prefer-no-csd and/or // geometry-corner-radius. Then, niri will know the corner radius and // draw the shadow correctly, without having to draw it behind the // window. These will also remove client-side shadows if the window // draws any. // // draw-behind-window true // You can change how shadows look. The values below are in logical // pixels and match the CSS box-shadow properties. // Softness controls the shadow blur radius. softness 30 // Spread expands the shadow. spread 5 // Offset moves the shadow relative to the window. offset x=0 y=5 // You can also change the shadow color and opacity. color "#0007" } // Struts shrink the area occupied by windows, similarly to layer-shell panels. // You can think of them as a kind of outer gaps. They are set in logical pixels. // Left and right struts will cause the next window to the side to always be visible. // Top and bottom struts will simply add outer gaps in addition to the area occupied by // layer-shell panels and regular gaps. struts { left 1 right -2 top -2 bottom -2 } } // Add lines like this to spawn processes at startup. // Note that running niri as a session supports xdg-desktop-autostart, // which may be more convenient to use. // See the binds section below for more spawn examples. // spawn-at-startup "alacritty" "-e" "fish" // Uncomment this line to ask the clients to omit their client-side decorations if possible. // If the client will specifically ask for CSD, the request will be honored. // Additionally, clients will be informed that they are tiled, removing some client-side rounded corners. // This option will also fix border/focus ring drawing behind some semitransparent windows. // After enabling or disabling this, you need to restart the apps for this to take effect. prefer-no-csd // You can change the path where screenshots are saved. // A ~ at the front will be expanded to the home directory. // The path is formatted with strftime(3) to give you the screenshot date and time. screenshot-path "~/Pictures/Screenshots/Screenshot_%Y-%m-%d_%H-%M-%S.png" // You can also set this to null to disable saving screenshots to disk. // screenshot-path null // Animation settings. // The wiki explains how to configure individual animations: // https://github.com/YaLTeR/niri/wiki/Configuration:-Animations animations { // Uncomment to turn off all animations. // off // Slow down all animations by this factor. Values below 1 speed them up instead. // slowdown 3.0 }