From 22ef12abd744bdfa56b2fcb12b004f6ce76ae659 Mon Sep 17 00:00:00 2001 From: Charlie Root Date: Fri, 14 Mar 2025 09:57:43 +0100 Subject: [PATCH] niri --- config.kdl | 141 ++++++----------------------------------------------- 1 file changed, 15 insertions(+), 126 deletions(-) diff --git a/config.kdl b/config.kdl index f8a21b6..3704e7d 100644 --- a/config.kdl +++ b/config.kdl @@ -1,20 +1,6 @@ -// This config is in the KDL format: https://kdl.dev -// "/-" comments out the following node. -// Check the wiki for a full description of the configuration: -// https://github.com/YaLTeR/niri/wiki/Configuration:-Overview - -// Input device configuration. -// Find the full list of options on the wiki: -// https://github.com/YaLTeR/niri/wiki/Configuration:-Input input { keyboard { xkb { - // You can set rules, model, layout, variant and options. - // For more information, see xkeyboard-config(7). - - // For example: - // layout "gb,ru" - layout "gb,ru,de" variant ",phonetic_winkeys," options "grp:rctrl_rshift_toggle, caps:escape, " @@ -27,12 +13,9 @@ input { touchpad { tap } - // 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%" + // focus-follows-mouse max-scroll-amount="0%" + focus-follows-mouse } // Laptop @@ -54,67 +37,28 @@ output "HDMI-A-1" { position x=1920 y=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 8 - // 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" + center-focused-column "on-overflow" - // You can customize the widths that "switch-preset-column-width" (Mod+R) toggles between. preset-column-widths { proportion 0.5 proportion 0.66667 proportion 0.33333 - - // 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 { } - - // You can change the default width of the new windows. default-column-width { proportion 0.5; } - // 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 { off } - // You can also add a border. It's similar to the focus ring, but always visible. border { width 4 active-color "ffc87f" inactive-color "#505050" } - - // 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. } @@ -140,25 +84,20 @@ switch-events { workspace "main" +workspace "scratch" +workspace "browser" workspace "social" workspace "keepass" -workspace "browser" workspace "infra" -workspace "scratch" workspace "multimedia" animations { - // Uncomment to turn off all animations. // off - slowdown 1.0 } // Open the Firefox picture-in-picture player as floating by default. window-rule { - // This app-id regular expression will work for both: - // - host Firefox (app-id is "firefox") - // - Flatpak Firefox (app-id is "org.mozilla.firefox") match app-id=r#"librewolf$"# title="^Picture-in-Picture$" open-floating true open-on-workspace "browser" @@ -166,7 +105,6 @@ window-rule { window-rule { match app-id=r#"^org\.keepassxc\.KeePassXC$"# - block-out-from "screen-capture" open-on-workspace "keepass" } @@ -176,7 +114,7 @@ hotkey-overlay { } cursor { - xcursor-theme "Bibata-Modern-Classic" + xcursor-theme "BreezeX-RosePine-Linux" xcursor-size 32 hide-when-typing @@ -186,7 +124,6 @@ cursor { binds { Mod+Shift+Slash { show-hotkey-overlay; } - Mod+Return { spawn "foot"; } Mod+D { spawn "fuzzel"; } Super+Alt+L { spawn "swaylock"; } @@ -258,14 +195,6 @@ binds { Mod+Shift+WheelScrollRight { move-column-right; } Mod+Shift+WheelScrollLeft { move-column-left; } - // You can refer to workspaces by index. However, keep in mind that - // niri is a dynamic workspace system, so these commands are kind of - // "best effort". Trying to refer to a workspace index bigger than - // the current workspace count will instead refer to the bottommost - // (empty) workspace. - // - // For example, with 2 workspaces + 1 empty, indices 3, 4, 5 and so on - // will all refer to the 3rd workspace. Mod+1 { focus-workspace 1; } Mod+2 { focus-workspace 2; } Mod+3 { focus-workspace 3; } @@ -276,29 +205,21 @@ binds { Mod+8 { focus-workspace 8; } Mod+9 { focus-workspace 9; } - Mod+Ctrl+1 { move-column-to-workspace 1; } - Mod+Ctrl+2 { move-column-to-workspace 2; } - Mod+Ctrl+3 { move-column-to-workspace 3; } - Mod+Ctrl+4 { move-column-to-workspace 4; } - Mod+Ctrl+5 { move-column-to-workspace 5; } - Mod+Ctrl+6 { move-column-to-workspace 6; } - Mod+Ctrl+7 { move-column-to-workspace 7; } - Mod+Ctrl+8 { move-column-to-workspace 8; } - Mod+Ctrl+9 { move-column-to-workspace 9; } + Mod+Shift+1 { move-column-to-workspace 1; } + Mod+Shift+2 { move-column-to-workspace 2; } + Mod+Shift+3 { move-column-to-workspace 3; } + Mod+Shift+4 { move-column-to-workspace 4; } + Mod+Shift+5 { move-column-to-workspace 5; } + Mod+Shift+6 { move-column-to-workspace 6; } + Mod+Shift+7 { move-column-to-workspace 7; } + Mod+Shift+8 { move-column-to-workspace 8; } + Mod+Shift+9 { move-column-to-workspace 9; } - // Switches focus between the current and the previous workspace. - // Mod+Tab { focus-workspace-previous; } - - // The following binds move the focused window in and out of a column. - // If the window is alone, they will consume it into the nearby column to the side. - // If the window is already in a column, they will expel it out. Mod+BracketLeft { consume-or-expel-window-left; } Mod+BracketRight { consume-or-expel-window-right; } - // Consume one window from the right to the bottom of the focused column. Mod+Comma { consume-window-into-column; } - // Expel the bottom window from the focused column to the right. Mod+Period { expel-window-from-column; } Mod+R { switch-preset-column-width; } @@ -307,22 +228,12 @@ binds { Mod+F { maximize-column; } Mod+Shift+F { fullscreen-window; } - // Expand the focused column to space not taken up by other fully visible columns. - // Makes the column "fill the rest of the space". Mod+Ctrl+F { expand-column-to-available-width; } Mod+C { center-column; } Mod+A {spawn "niri-switch-to-workspace"; } - // Finer width adjustments. - // This command can also: - // * set width in pixels: "1000" - // * adjust width in pixels: "-5" or "+5" - // * set width as a percentage of screen width: "25%" - // * adjust width as a percentage of screen width: "-10%" or "+10%" - // Pixel sizes use logical, or scaled, pixels. I.e. on an output with scale 2.0, - // set-column-width "100" will make the column occupy 200 physical screen pixels. Mod+Minus { set-column-width "-10%"; } Mod+Equal { set-column-width "+10%"; } @@ -334,37 +245,15 @@ binds { Mod+V { toggle-window-floating; } Mod+Shift+V { switch-focus-between-floating-and-tiling; } - // Toggle tabbed column display mode. - // Windows in this column will appear as vertical tabs, - // rather than stacked on top of each other. Mod+W { toggle-column-tabbed-display; } - // Actions to switch layouts. - // Note: if you uncomment these, make sure you do NOT have - // a matching layout switch hotkey configured in xkb options above. - // Having both at once on the same hotkey will break the switching, - // since it will switch twice upon pressing the hotkey (once by xkb, once by niri). - // Mod+Space { switch-layout "next"; } - // Mod+Shift+Space { switch-layout "prev"; } - Print { screenshot; } Ctrl+Print { screenshot-screen; } Alt+Print { screenshot-window; } - // Applications such as remote-desktop clients and software KVM switches may - // request that niri stops processing the keyboard shortcuts defined here - // so they may, for example, forward the key presses as-is to a remote machine. - // It's a good idea to bind an escape hatch to toggle the inhibitor, - // so a buggy application can't hold your session hostage. - // - // The allow-inhibiting=false property can be applied to other binds as well, - // which ensures niri always processes them, even when an inhibitor is active. Mod+Escape allow-inhibiting=false { toggle-keyboard-shortcuts-inhibit; } - // The quit action will show a confirmation dialog to avoid accidental exits. Mod+Shift+E { quit; } - // Powers off the monitors. To turn them back on, do any input like - // moving the mouse or pressing any other key. Mod+Shift+P { power-off-monitors; } }