diff --git a/.config/niri/.gitignore b/.config/niri/.gitignore new file mode 100644 index 00000000..2c4872d4 --- /dev/null +++ b/.config/niri/.gitignore @@ -0,0 +1 @@ +config.kdl diff --git a/.config/niri/config.kdl b/.config/niri/config.kdl deleted file mode 100644 index 157f5245..00000000 --- a/.config/niri/config.kdl +++ /dev/null @@ -1,800 +0,0 @@ -output "eDP-1" { - scale 1.5 -} -output "DP-1" { - mode "3840x2160" - scale 2 -} -// 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 { - layout "us" - options "compose:paus" - } - repeat-delay 250 - repeat-rate 30 - } - // Next sections include libinput settings. - // Omitting settings disables them, or leaves them at their default values. - touchpad { - off - // tap - // dwt - // dwtp - // drag-lock - // natural-scroll - // accel-speed 0.2 - // accel-profile "flat" - // scroll-method "two-finger" - // disabled-on-external-mouse - } - mouse { - // off - // natural-scroll - accel-speed 0.1 - 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%" - // focus-follows-mouse max-scroll-amount="0%" - focus-follows-mouse -} -// BenQ -output "DP-1" { - mode "1920x1080@143.981" - position x=1920 y=0 -} -// Dell -output "HDMI-A-1" { - mode "1920x1200@59.950" -} -// Settings that influence how windows are positioned and sized. -// Find more information on the wiki: -// https://github.com/YaLTeR/niri/wiki/Configuration:-Layout -// 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 16 - struts { - top -16 - bottom -16 - } - // gaps 16 - // 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 "on-overflow" - always-center-single-column - // 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.33333 - proportion 0.5 - proportion 0.66667 - // proportion 0.75 - // 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 - width 1 - active-color "#B14242" - inactive-color "#121212" - } - border { - // off - width 1 - active-color "#B14242" - inactive-color "#121212" - } - // 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. -} -// 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" -spawn-at-startup "dunst" "&" -// spawn-at-startup "systemctl" "--user" "start" "blueman-applet.service" -// spawn-at-startup "systemctl" "--user" "restart" "blueman-manager.service" -// spawn-at-startup "systemctl" "--user" "restart" "waybar" -spawn-at-startup "xwayland-satellite" -// 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/niris/niri-%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 - slowdown 0.7 -} -// Window rules let you adjust behavior for individual windows. -// Find more information on the wiki: -// https://github.com/YaLTeR/niri/wiki/Configuration:-Window-Rules -// Work around WezTerm's initial configure bug -// by setting an empty default-column-width. -window-rule { - match app-id="^spotify$" - open-on-workspace "music" -} -window-rule { - match app-id="footfloat" - open-floating true -} -window-rule { - // This regular expression is intentionally made as specific as possible, - // since this is the default config, and we want no false positives. - // You can get away with just app-id="wezterm" if you want. - match app-id="^org\\.wezfurlong\\.wezterm$" - default-column-width { - - } -} -window-rule { - match app-id="thunderbird$|Betterbird$" - default-column-width { - proportion 0.75 - } -} -window-rule { - match app-id="vesktop$" - // clip-to-geometry true - // min-width 500 - // draw-border-with-background true -} -window-rule { - match app-id="firefox$" - default-column-width { - proportion 0.8 - } - clip-to-geometry true -} -window-rule { - match app-id="Bitwarden" - default-column-width { - proportion 0.33337 - } - open-floating true -} -// 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="firefox$" title="^Picture-in-Picture$" -// open-floating true -// } -// Example: block out two password managers from screen capture. -// (This example rule is commented out with a "/-" in front.) -window-rule { - match app-id="^org\\.keepassxc\\.KeePassXC$" - match app-id="^org\\.gnome\\.World\\.Secrets$" - match app-id="^Bitwarden$" - block-out-from "screen-capture" - // Use this instead if you want them visible on third-party screenshot tools. - // block-out-from "screencast" -} -// Steam notifications -window-rule { - match app-id="steam" title="notificationtoasts" - open-focused false - open-floating true - default-floating-position x=100 y=100 relative-to="bottom-right" -} -layer-rule { - match namespace="^launcher$" - shadow { - on - } - // Fuzzel defaults to 10 px rounded corners. - // geometry-corner-radius 10 -} -// Example: enable rounded corners for all windows.// (This example rule is commented out with a "/-" in front.) -/-window-rule { -geometry-corner-radius 12 -clip-to-geometry true -} -environment { - QT_QPA_PLATFORM "wayland" - DISPLAY ":0" - ELECTRON_OZONE_PLATFORM_HINT "auto" - OZONE_PLATFORM "wayland" - QT_QPA_PLATFORM "wayland" - QT_QPA_PLATFORMTHEME "qt5ct" - QT_WAYLAND_DISABLE_WINDOWDECORATION "1" - QT_AUTO_SCREEN_SCALE_FACTOR "1" - // GTK_IM_MODULE "fcitx" - // QT_IM_MODULE "fcitx" - // XMODIFIERS "@im=fcitx" -} -cursor { - hide-when-typing -} -hotkey-overlay { - skip-at-startup -} -binds { - // Keys consist of modifiers separated by + signs, followed by an XKB key name - // in the end. To find an XKB name for a particular key, you may use a program - // like wev. - // - // "Mod" is a special modifier equal to Super when running on a TTY, and to Alt - // when running as a winit window. - // - // Most actions that you can bind here can also be invoked programmatically with - // `niri msg action do-something`. - // Mod-Shift-/, which is usually the same as Mod-?, - // shows a list of important hotkeys. - Mod+Shift+Slash { - show-hotkey-overlay - } - // Suggested binds for running programs: terminal, app launcher, screen locker. - Mod+Return { - spawn "footclient" - } - Mod+Space { - spawn "footclient" - } - Mod+D { - spawn "fuzzel" "--placeholder=Select an application:" - // spawn "fuzzel" "--hide-before-typing" "-I" "--placeholder=Select an application:" - } - Mod+Ctrl+semicolon { - spawn "swaylock" "-c" "121212" "-e" "-f" "-F" - } - // You can also use a shell. Do this if you need pipes, multiple commands, etc. - // Note: the entire command goes as a single argument in the end. - // Mod+T { spawn "bash" "-c" "notify-send hello && exec alacritty"; } - XF86AudioRaiseVolume allow-when-locked=true { - spawn "wpctl" "set-volume" "@DEFAULT_AUDIO_SINK@" "0.05+" - } - XF86AudioLowerVolume allow-when-locked=true { - spawn "wpctl" "set-volume" "@DEFAULT_AUDIO_SINK@" "0.05-" - } - XF86AudioMute allow-when-locked=true { - spawn "wpctl" "set-mute" "@DEFAULT_AUDIO_SINK@" "toggle" - } - XF86AudioMicMute allow-when-locked=true { - spawn "wpctl" "set-mute" "@DEFAULT_AUDIO_SOURCE@" "toggle" - } - XF86AudioPlay allow-when-locked=true { - spawn "playerctl" "--player=spotify" "play-pause" - } - XF86AudioStop allow-when-locked=true { - spawn "playerctl" "--all-players" "play-pause" "--ignore-player=spotify" - } - XF86MonBrightnessDown allow-when-locked=true { - spawn "brightnessctl" "set" "5%-" - } - XF86MonBrightnessUp allow-when-locked=true { - spawn "brightnessctl" "set" "5%+" - } - Mod+Q { - close-window - } - // Colemak-DH bindings - Mod+Left { - focus-column-left - } - Mod+Down { - focus-window-down - } - Mod+Up { - focus-window-up - } - Mod+Right { - focus-column-right - } - Mod+M { - focus-column-or-monitor-left - } - // Mod+N { focus-window-down; } - // Mod+E { focus-window-up; } - Mod+I { - focus-column-or-monitor-right - } - Mod+Shift+Left { - move-column-left - } - Mod+Shift+Down { - move-window-down - } - Mod+Shift+Up { - move-window-up - } - Mod+Shift+Right { - move-column-right - } - Mod+Shift+M { - move-column-left-or-to-monitor-left - } - // Mod+Shift+N { move-window-down; } - // Mod+Shift+E { move-window-up; } - Mod+Shift+I { - move-column-right-or-to-monitor-right - } - // Alternative commands that move across workspaces when reaching - // the first or last window in a column. - Mod+N { - focus-window-or-workspace-down - } - Mod+E { - focus-window-or-workspace-up - } - Mod+Shift+N { - move-window-down-or-to-workspace-down - } - Mod+Shift+E { - move-window-up-or-to-workspace-up - } - Mod+A { - focus-column-first - } - Mod+O { - focus-column-last - } - Mod+Shift+A { - move-column-to-first - } - Mod+Shift+O { - move-column-to-last - } - // don't love these honestly - // TODO: Change smart-mouse to LGUI on keyboard? - Mod+Period { - focus-monitor-left - } - Mod+Slash { - focus-monitor-right - } - Mod+Ctrl+Up { - focus-monitor-up - } - Mod+Ctrl+Right { - focus-monitor-right - } - Mod+Ctrl+M { - focus-monitor-left - } - Mod+Ctrl+N { - focus-monitor-down - } - Mod+Ctrl+E { - focus-monitor-up - } - Mod+Ctrl+I { - focus-monitor-right - } - Mod+Shift+Ctrl+Left { - move-column-to-monitor-left - } - Mod+Shift+Ctrl+Down { - move-column-to-monitor-down - } - Mod+Shift+Ctrl+Up { - move-column-to-monitor-up - } - Mod+Shift+Period { - move-column-to-monitor-right - } - Mod+Shift+Comma { - move-column-to-monitor-left - } - Mod+Shift+Ctrl+N { - move-column-to-monitor-down - } - Mod+Shift+Ctrl+E { - move-column-to-monitor-up - } - Mod+Shift+Ctrl+I { - move-column-to-monitor-right - } - // Alternatively, there are commands to move just a single window: - // Mod+Shift+Ctrl+Left { move-window-to-monitor-left; } - // ... - // And you can also move a whole workspace to another monitor: - // Mod+Shift+Ctrl+Left { move-workspace-to-monitor-left; } - // ... - Mod+H { - focus-workspace-down - } - Mod+Comma { - focus-workspace-up - } - Mod+L { - move-workspace-down - } - Mod+U { - move-workspace-up - } - Mod+J { - move-workspace-to-monitor-left - } - Mod+Y { - move-workspace-to-monitor-right - } - Mod+Ctrl+Page_Down { - move-column-to-workspace-down - } - Mod+Ctrl+Page_Up { - move-column-to-workspace-up - } - Mod+Shift+L { - move-column-to-workspace-down - } - Mod+Shift+U { - move-column-to-workspace-up - } - // Alternatively, there are commands to move just a single window: - // Mod+Ctrl+Page_Down { move-window-to-workspace-down; } - // ... - Mod+Shift+Page_Down { - move-workspace-down - } - Mod+Shift+Page_Up { - move-workspace-up - } - Mod+Ctrl+L { - move-workspace-down - } - Mod+Ctrl+U { - move-workspace-up - } - // You can bind mouse wheel scroll ticks using the following syntax. - // These binds will change direction based on the natural-scroll setting. - // - // To avoid scrolling through workspaces really fast, you can use - // the cooldown-ms property. The bind will be rate-limited to this value. - // You can set a cooldown on any bind, but it's most useful for the wheel. - Mod+MouseForward { - focus-column-right - } - Mod+MouseBack { - focus-column-left - } - Mod+WheelScrollDown cooldown-ms=150 { - focus-workspace-down - } - Mod+WheelScrollUp cooldown-ms=150 { - focus-workspace-up - } - Mod+Ctrl+WheelScrollDown cooldown-ms=150 { - move-column-to-workspace-down - } - Mod+Ctrl+WheelScrollUp cooldown-ms=150 { - move-column-to-workspace-up - } - Mod+WheelScrollRight { - focus-column-right - } - Mod+WheelScrollLeft { - focus-column-left - } - Mod+Ctrl+WheelScrollRight { - move-column-right - } - Mod+Ctrl+WheelScrollLeft { - move-column-left - } - // Usually scrolling up and down with Shift in applications results in - // horizontal scrolling; these binds replicate that. - Mod+Shift+WheelScrollDown { - focus-column-right - } - Mod+Shift+WheelScrollUp { - focus-column-left - } - Mod+Ctrl+Shift+WheelScrollDown { - move-column-right - } - Mod+Ctrl+Shift+WheelScrollUp { - move-column-left - } - // Similarly, you can bind touchpad scroll "ticks". - // Touchpad scrolling is continuous, so for these binds it is split into - // discrete intervals. - // These binds are also affected by touchpad's natural-scroll, so these - // example binds are "inverted", since we have natural-scroll enabled for - // touchpads by default. - // Mod+TouchpadScrollDown { spawn "wpctl" "set-volume" "@DEFAULT_AUDIO_SINK@" "0.02+"; } - // Mod+TouchpadScrollUp { spawn "wpctl" "set-volume" "@DEFAULT_AUDIO_SINK@" "0.02-"; } - // 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 - } - Mod+4 { - focus-workspace 4 - } - Mod+5 { - focus-workspace 5 - } - Mod+6 { - focus-workspace 6 - } - Mod+7 { - focus-workspace 7 - } - Mod+8 { - focus-workspace 8 - } - Mod+9 { - focus-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 - } - // Alternatively, there are commands to move just a single window: - // Mod+Ctrl+1 { move-window-to-workspace 1; } - // Switches focus between the current and the previous workspace. - Mod+Tab { - focus-workspace-previous - } - // Adapt the sway-window-switcher and bind it here - // 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+Alt+C { - consume-or-expel-window-left - } - Mod+Alt+D { - consume-or-expel-window-right - } - // Consume one window from the right to the bottom of the focused column. - Mod+Alt+F { - consume-window-into-column - } - // Expel the bottom window from the focused column to the right. - Mod+Alt+P { - expel-window-from-column - } - Mod+R { - switch-preset-column-width - } - // Mod+Shift+R { - // switch-preset-window-height - // } - // Mod+Ctrl+R { - // reset-window-height - // } - 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 - } - // 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%" - } - // Finer height adjustments when in column with other windows. - Mod+Shift+Minus { - set-window-height "-10%" - } - Mod+Shift+Equal { - set-window-height "+10%" - } - // Move the focused window between the floating and the tiling layout. - Mod+Shift+T { - toggle-window-floating - } - Mod+T { - 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"; } - // reload waybar - Mod+Shift+W { - spawn "systemctl" "--user" "restart" "waybar" - // spawn "killall" "-SIGUSR2" "waybar" - } - Mod+S { - screenshot - } - Mod+Ctrl+S { - screenshot-screen - } - Mod+Shift+S { - screenshot-window - } - Mod+Alt+S { - spawn "~/dev/wayland-utils/recorder/recorder.sh" "screen" - } - Mod+Shift+Alt+S { - spawn "~/dev/wayland-utils/recorder/recorder.sh" "region" - } - Mod+Escape { - spawn "~/dev/wayland-utils/niri-switcher/window-picker.py" - } - Mod+semicolon { - spawn "~/dev/wayland-utils/foot/foot-command.py" - } - Mod+P { - spawn "clipcat-menu" - } - Mod+B { - spawn "~/.config/niri/scripts/rbw-fuzzel.fish" - } - // 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+Ctrl+Escape allow-inhibiting=false { - toggle-keyboard-shortcuts-inhibit - } - // The quit action will show a confirmation dialog to avoid accidental exits. - Mod+Shift+semicolon { - spawn "~/dev/utils/waymoji/waymoji.fish" - } - // Mod+Shift+semicolon { - // 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 - } -} diff --git a/.config/niri/config.kdl##hostname.dbox b/.config/niri/config.kdl##hostname.dbox deleted file mode 100644 index 4ecb7ed1..00000000 --- a/.config/niri/config.kdl##hostname.dbox +++ /dev/null @@ -1,797 +0,0 @@ -workspace "music" { - open-on-output "Dell" -} -// 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 { - layout "us" - options "compose:paus" - } - repeat-delay 250 - repeat-rate 30 - } - // Next sections include libinput settings. - // Omitting settings disables them, or leaves them at their default values. - touchpad { - off - // tap - // dwt - // dwtp - // drag-lock - // natural-scroll - // accel-speed 0.2 - // accel-profile "flat" - // scroll-method "two-finger" - // disabled-on-external-mouse - } - mouse { - // off - // natural-scroll - accel-speed 0.1 - 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%" - // focus-follows-mouse max-scroll-amount="0%" - focus-follows-mouse -} -// BenQ -output "DP-1" { - mode "1920x1080@143.981" - position x=1920 y=0 -} -// Dell -output "HDMI-A-1" { - mode "1920x1200@59.950" -} -// Settings that influence how windows are positioned and sized. -// Find more information on the wiki: -// https://github.com/YaLTeR/niri/wiki/Configuration:-Layout -// 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 16 - struts { - top -16 - bottom -16 - } - // gaps 16 - // 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 "on-overflow" - always-center-single-column - // 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.33333 - proportion 0.5 - proportion 0.66667 - // proportion 0.75 - // 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 - width 1 - active-color "#B14242" - inactive-color "#121212" - } - border { - // off - width 1 - active-color "#B14242" - inactive-color "#121212" - } - // 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. -} -// 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" -spawn-at-startup "dunst" "&" -// spawn-at-startup "systemctl" "--user" "start" "blueman-applet.service" -// spawn-at-startup "systemctl" "--user" "restart" "blueman-manager.service" -// spawn-at-startup "systemctl" "--user" "restart" "waybar" -spawn-at-startup "xwayland-satellite" -// 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/niris/niri-%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 - slowdown 0.7 -} -// Window rules let you adjust behavior for individual windows. -// Find more information on the wiki: -// https://github.com/YaLTeR/niri/wiki/Configuration:-Window-Rules -// Work around WezTerm's initial configure bug -// by setting an empty default-column-width. -window-rule { - match app-id="^spotify$" - open-on-workspace "music" -} -window-rule { - match app-id="footfloat" - open-floating true -} -window-rule { - // This regular expression is intentionally made as specific as possible, - // since this is the default config, and we want no false positives. - // You can get away with just app-id="wezterm" if you want. - match app-id="^org\\.wezfurlong\\.wezterm$" - default-column-width { - - } -} -window-rule { - match app-id="thunderbird$|Betterbird$" - default-column-width { - proportion 0.75 - } -} -window-rule { - match app-id="vesktop$" - // clip-to-geometry true - // min-width 500 - // draw-border-with-background true -} -window-rule { - match app-id="firefox$" - default-column-width { - proportion 0.8 - } - clip-to-geometry true -} -window-rule { - match app-id="Bitwarden" - default-column-width { - proportion 0.33337 - } - open-floating true -} -// 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="firefox$" title="^Picture-in-Picture$" -// open-floating true -// } -// Example: block out two password managers from screen capture. -// (This example rule is commented out with a "/-" in front.) -window-rule { - match app-id="^org\\.keepassxc\\.KeePassXC$" - match app-id="^org\\.gnome\\.World\\.Secrets$" - match app-id="^Bitwarden$" - block-out-from "screen-capture" - // Use this instead if you want them visible on third-party screenshot tools. - // block-out-from "screencast" -} -// Steam notifications -window-rule { - match app-id="steam" title="notificationtoasts" - open-focused false - open-floating true - default-floating-position x=100 y=100 relative-to="bottom-right" -} -layer-rule { - match namespace="^launcher$" - shadow { - on - } - // Fuzzel defaults to 10 px rounded corners. - // geometry-corner-radius 10 -} -// Example: enable rounded corners for all windows.// (This example rule is commented out with a "/-" in front.) -/-window-rule { -geometry-corner-radius 12 -clip-to-geometry true -} -environment { - QT_QPA_PLATFORM "wayland" - DISPLAY ":0" - ELECTRON_OZONE_PLATFORM_HINT "auto" - OZONE_PLATFORM "wayland" - QT_QPA_PLATFORM "wayland" - QT_QPA_PLATFORMTHEME "qt5ct" - QT_WAYLAND_DISABLE_WINDOWDECORATION "1" - QT_AUTO_SCREEN_SCALE_FACTOR "1" - // GTK_IM_MODULE "fcitx" - // QT_IM_MODULE "fcitx" - // XMODIFIERS "@im=fcitx" -} -cursor { - hide-when-typing -} -hotkey-overlay { - skip-at-startup -} -binds { - // Keys consist of modifiers separated by + signs, followed by an XKB key name - // in the end. To find an XKB name for a particular key, you may use a program - // like wev. - // - // "Mod" is a special modifier equal to Super when running on a TTY, and to Alt - // when running as a winit window. - // - // Most actions that you can bind here can also be invoked programmatically with - // `niri msg action do-something`. - // Mod-Shift-/, which is usually the same as Mod-?, - // shows a list of important hotkeys. - Mod+Shift+Slash { - show-hotkey-overlay - } - // Suggested binds for running programs: terminal, app launcher, screen locker. - Mod+Return { - spawn "footclient" - } - Mod+Space { - spawn "footclient" - } - Mod+D { - spawn "fuzzel" "--placeholder=Select an application:" - // spawn "fuzzel" "--hide-before-typing" "-I" "--placeholder=Select an application:" - } - Mod+Ctrl+semicolon { - spawn "swaylock" "-c" "121212" "-e" "-f" "-F" - } - // You can also use a shell. Do this if you need pipes, multiple commands, etc. - // Note: the entire command goes as a single argument in the end. - // Mod+T { spawn "bash" "-c" "notify-send hello && exec alacritty"; } - XF86AudioRaiseVolume allow-when-locked=true { - spawn "wpctl" "set-volume" "@DEFAULT_AUDIO_SINK@" "0.05+" - } - XF86AudioLowerVolume allow-when-locked=true { - spawn "wpctl" "set-volume" "@DEFAULT_AUDIO_SINK@" "0.05-" - } - XF86AudioMute allow-when-locked=true { - spawn "wpctl" "set-mute" "@DEFAULT_AUDIO_SINK@" "toggle" - } - XF86AudioMicMute allow-when-locked=true { - spawn "wpctl" "set-mute" "@DEFAULT_AUDIO_SOURCE@" "toggle" - } - XF86AudioPlay allow-when-locked=true { - spawn "playerctl" "--player=spotify" "play-pause" - } - XF86AudioStop allow-when-locked=true { - spawn "playerctl" "--all-players" "play-pause" "--ignore-player=spotify" - } - XF86MonBrightnessDown allow-when-locked=true { - spawn "brightnessctl" "set" "5%-" - } - XF86MonBrightnessUp allow-when-locked=true { - spawn "brightnessctl" "set" "5%+" - } - Mod+Q { - close-window - } - // Colemak-DH bindings - Mod+Left { - focus-column-left - } - Mod+Down { - focus-window-down - } - Mod+Up { - focus-window-up - } - Mod+Right { - focus-column-right - } - Mod+M { - focus-column-or-monitor-left - } - // Mod+N { focus-window-down; } - // Mod+E { focus-window-up; } - Mod+I { - focus-column-or-monitor-right - } - Mod+Shift+Left { - move-column-left - } - Mod+Shift+Down { - move-window-down - } - Mod+Shift+Up { - move-window-up - } - Mod+Shift+Right { - move-column-right - } - Mod+Shift+M { - move-column-left-or-to-monitor-left - } - // Mod+Shift+N { move-window-down; } - // Mod+Shift+E { move-window-up; } - Mod+Shift+I { - move-column-right-or-to-monitor-right - } - // Alternative commands that move across workspaces when reaching - // the first or last window in a column. - Mod+N { - focus-window-or-workspace-down - } - Mod+E { - focus-window-or-workspace-up - } - Mod+Shift+N { - move-window-down-or-to-workspace-down - } - Mod+Shift+E { - move-window-up-or-to-workspace-up - } - Mod+A { - focus-column-first - } - Mod+O { - focus-column-last - } - Mod+Shift+A { - move-column-to-first - } - Mod+Shift+O { - move-column-to-last - } - // don't love these honestly - // TODO: Change smart-mouse to LGUI on keyboard? - Mod+Period { - focus-monitor-left - } - Mod+Slash { - focus-monitor-right - } - Mod+Ctrl+Up { - focus-monitor-up - } - Mod+Ctrl+Right { - focus-monitor-right - } - Mod+Ctrl+M { - focus-monitor-left - } - Mod+Ctrl+N { - focus-monitor-down - } - Mod+Ctrl+E { - focus-monitor-up - } - Mod+Ctrl+I { - focus-monitor-right - } - Mod+Shift+Ctrl+Left { - move-column-to-monitor-left - } - Mod+Shift+Ctrl+Down { - move-column-to-monitor-down - } - Mod+Shift+Ctrl+Up { - move-column-to-monitor-up - } - Mod+Shift+Period { - move-column-to-monitor-right - } - Mod+Shift+Comma { - move-column-to-monitor-left - } - Mod+Shift+Ctrl+N { - move-column-to-monitor-down - } - Mod+Shift+Ctrl+E { - move-column-to-monitor-up - } - Mod+Shift+Ctrl+I { - move-column-to-monitor-right - } - // Alternatively, there are commands to move just a single window: - // Mod+Shift+Ctrl+Left { move-window-to-monitor-left; } - // ... - // And you can also move a whole workspace to another monitor: - // Mod+Shift+Ctrl+Left { move-workspace-to-monitor-left; } - // ... - Mod+H { - focus-workspace-down - } - Mod+Comma { - focus-workspace-up - } - Mod+L { - move-workspace-down - } - Mod+U { - move-workspace-up - } - Mod+J { - move-workspace-to-monitor-left - } - Mod+Y { - move-workspace-to-monitor-right - } - Mod+Ctrl+Page_Down { - move-column-to-workspace-down - } - Mod+Ctrl+Page_Up { - move-column-to-workspace-up - } - Mod+Shift+L { - move-column-to-workspace-down - } - Mod+Shift+U { - move-column-to-workspace-up - } - // Alternatively, there are commands to move just a single window: - // Mod+Ctrl+Page_Down { move-window-to-workspace-down; } - // ... - Mod+Shift+Page_Down { - move-workspace-down - } - Mod+Shift+Page_Up { - move-workspace-up - } - Mod+Ctrl+L { - move-workspace-down - } - Mod+Ctrl+U { - move-workspace-up - } - // You can bind mouse wheel scroll ticks using the following syntax. - // These binds will change direction based on the natural-scroll setting. - // - // To avoid scrolling through workspaces really fast, you can use - // the cooldown-ms property. The bind will be rate-limited to this value. - // You can set a cooldown on any bind, but it's most useful for the wheel. - Mod+MouseForward { - focus-column-right - } - Mod+MouseBack { - focus-column-left - } - Mod+WheelScrollDown cooldown-ms=150 { - focus-workspace-down - } - Mod+WheelScrollUp cooldown-ms=150 { - focus-workspace-up - } - Mod+Ctrl+WheelScrollDown cooldown-ms=150 { - move-column-to-workspace-down - } - Mod+Ctrl+WheelScrollUp cooldown-ms=150 { - move-column-to-workspace-up - } - Mod+WheelScrollRight { - focus-column-right - } - Mod+WheelScrollLeft { - focus-column-left - } - Mod+Ctrl+WheelScrollRight { - move-column-right - } - Mod+Ctrl+WheelScrollLeft { - move-column-left - } - // Usually scrolling up and down with Shift in applications results in - // horizontal scrolling; these binds replicate that. - Mod+Shift+WheelScrollDown { - focus-column-right - } - Mod+Shift+WheelScrollUp { - focus-column-left - } - Mod+Ctrl+Shift+WheelScrollDown { - move-column-right - } - Mod+Ctrl+Shift+WheelScrollUp { - move-column-left - } - // Similarly, you can bind touchpad scroll "ticks". - // Touchpad scrolling is continuous, so for these binds it is split into - // discrete intervals. - // These binds are also affected by touchpad's natural-scroll, so these - // example binds are "inverted", since we have natural-scroll enabled for - // touchpads by default. - // Mod+TouchpadScrollDown { spawn "wpctl" "set-volume" "@DEFAULT_AUDIO_SINK@" "0.02+"; } - // Mod+TouchpadScrollUp { spawn "wpctl" "set-volume" "@DEFAULT_AUDIO_SINK@" "0.02-"; } - // 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 - } - Mod+4 { - focus-workspace 4 - } - Mod+5 { - focus-workspace 5 - } - Mod+6 { - focus-workspace 6 - } - Mod+7 { - focus-workspace 7 - } - Mod+8 { - focus-workspace 8 - } - Mod+9 { - focus-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 - } - // Alternatively, there are commands to move just a single window: - // Mod+Ctrl+1 { move-window-to-workspace 1; } - // Switches focus between the current and the previous workspace. - Mod+Tab { - focus-workspace-previous - } - // Adapt the sway-window-switcher and bind it here - // 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+Alt+C { - consume-or-expel-window-left - } - Mod+Alt+D { - consume-or-expel-window-right - } - // Consume one window from the right to the bottom of the focused column. - Mod+Alt+F { - consume-window-into-column - } - // Expel the bottom window from the focused column to the right. - Mod+Alt+P { - expel-window-from-column - } - Mod+R { - switch-preset-column-width - } - // Mod+Shift+R { - // switch-preset-window-height - // } - // Mod+Ctrl+R { - // reset-window-height - // } - 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 - } - // 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%" - } - // Finer height adjustments when in column with other windows. - Mod+Shift+Minus { - set-window-height "-10%" - } - Mod+Shift+Equal { - set-window-height "+10%" - } - // Move the focused window between the floating and the tiling layout. - Mod+Shift+T { - toggle-window-floating - } - Mod+T { - 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"; } - // reload waybar - Mod+Shift+W { - spawn "systemctl" "--user" "restart" "waybar" - // spawn "killall" "-SIGUSR2" "waybar" - } - Mod+S { - screenshot - } - Mod+Ctrl+S { - screenshot-screen - } - Mod+Shift+S { - screenshot-window - } - Mod+Alt+S { - spawn "~/dev/wayland-utils/recorder/recorder.sh" "screen" - } - Mod+Shift+Alt+S { - spawn "~/dev/wayland-utils/recorder/recorder.sh" "region" - } - Mod+Escape { - spawn "~/dev/wayland-utils/niri-switcher/window-picker.py" - } - Mod+semicolon { - spawn "~/dev/wayland-utils/foot/foot-command.py" - } - Mod+P { - spawn "clipcat-menu" - } - Mod+B { - spawn "~/.config/niri/scripts/rbw-fuzzel.fish" - } - // 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+Ctrl+Escape allow-inhibiting=false { - toggle-keyboard-shortcuts-inhibit - } - // The quit action will show a confirmation dialog to avoid accidental exits. - Mod+Shift+semicolon { - spawn "~/dev/utils/waymoji/waymoji.fish" - } - // Mod+Shift+semicolon { - // 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 - } -} - diff --git a/.config/niri/config.kdl##hostname.dpad b/.config/niri/config.kdl##hostname.dpad deleted file mode 100644 index 81ed7822..00000000 --- a/.config/niri/config.kdl##hostname.dpad +++ /dev/null @@ -1,785 +0,0 @@ -// workspace "music" -// 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 { - layout "us" - options "compose:paus" - } - repeat-delay 250 - repeat-rate 30 - } - // Next sections include libinput settings. - // Omitting settings disables them, or leaves them at their default values. - touchpad { - // off - tap - // dwt - // dwtp - // drag-lock - // natural-scroll - // accel-speed 0.2 - // accel-profile "flat" - scroll-method "two-finger" - // disabled-on-external-mouse - } - mouse { - // off - // natural-scroll - accel-speed 0.1 - 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%" - focus-follows-mouse -} -output "eDP-1" { - scale 1.5 -} -output "DP-1" { - mode "3840x2160" - scale 2 -} -// Settings that influence how windows are positioned and sized. -// Find more information on the wiki: -// https://github.com/YaLTeR/niri/wiki/Configuration:-Layout -// 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 16 - struts { - top -16 - bottom -16 - } - // gaps 16 - // 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 "on-overflow" - always-center-single-column - // 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.33333 - proportion 0.5 - proportion 0.66667 - // proportion 0.75 - // 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 - width 1 - active-color "#B14242" - inactive-color "#121212" - } - border { - // off - width 1 - active-color "#B14242" - inactive-color "#121212" - } - // 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. -} -// 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" -spawn-at-startup "dunst" "&" -// spawn-at-startup "systemctl" "--user" "start" "blueman-applet.service" -// spawn-at-startup "systemctl" "--user" "restart" "blueman-manager.service" -// spawn-at-startup "systemctl" "--user" "restart" "waybar" -spawn-at-startup "xwayland-satellite" -// 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/niris/niri-%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 - slowdown 0.7 -} -// Window rules let you adjust behavior for individual windows. -// Find more information on the wiki: -// https://github.com/YaLTeR/niri/wiki/Configuration:-Window-Rules -// Work around WezTerm's initial configure bug -// by setting an empty default-column-width. -window-rule { - match app-id="^spotify$" - open-on-workspace "music" -} -window-rule { - // This regular expression is intentionally made as specific as possible, - // since this is the default config, and we want no false positives. - // You can get away with just app-id="wezterm" if you want. - match app-id="^org\\.wezfurlong\\.wezterm$" - default-column-width { - - } -} -window-rule { - match app-id="thunderbird$|Betterbird$" - default-column-width { - proportion 0.75 - } -} -window-rule { - match app-id="vesktop$" - // clip-to-geometry true - // min-width 500 - // draw-border-with-background true -} -window-rule { - match app-id="firefox$" - default-column-width { - proportion 0.8 - } - clip-to-geometry true -} -window-rule { - match app-id="Bitwarden" - default-column-width { - proportion 0.33337 - } - open-floating true -} -// 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="firefox$" title="^Picture-in-Picture$" -// open-floating true -// } -// Example: block out two password managers from screen capture. -// (This example rule is commented out with a "/-" in front.) -window-rule { - match app-id="^org\\.keepassxc\\.KeePassXC$" - match app-id="^org\\.gnome\\.World\\.Secrets$" - match app-id="^Bitwarden$" - block-out-from "screen-capture" - // Use this instead if you want them visible on third-party screenshot tools. - // block-out-from "screencast" -} -// Steam notifications -window-rule { - match app-id="steam" title="notificationtoasts" - open-focused false - open-floating true - default-floating-position x=100 y=100 relative-to="bottom-right" -} -layer-rule { - match namespace="^launcher$" - shadow { - on - } - // Fuzzel defaults to 10 px rounded corners. - // geometry-corner-radius 10 -} -// Example: enable rounded corners for all windows.// (This example rule is commented out with a "/-" in front.) -/-window-rule { -geometry-corner-radius 12 -clip-to-geometry true -} -environment { - QT_QPA_PLATFORM "wayland" - DISPLAY ":0" - ELECTRON_OZONE_PLATFORM_HINT "auto" - OZONE_PLATFORM "wayland" - QT_QPA_PLATFORM "wayland" - QT_QPA_PLATFORMTHEME "qt5ct" - QT_WAYLAND_DISABLE_WINDOWDECORATION "1" - QT_AUTO_SCREEN_SCALE_FACTOR "1" - GTK_IM_MODULE "fcitx" - QT_IM_MODULE "fcitx" - XMODIFIERS "@im=fcitx" -} -cursor { - hide-when-typing -} -hotkey-overlay { - skip-at-startup -} -binds { - // Keys consist of modifiers separated by + signs, followed by an XKB key name - // in the end. To find an XKB name for a particular key, you may use a program - // like wev. - // - // "Mod" is a special modifier equal to Super when running on a TTY, and to Alt - // when running as a winit window. - // - // Most actions that you can bind here can also be invoked programmatically with - // `niri msg action do-something`. - // Mod-Shift-/, which is usually the same as Mod-?, - // shows a list of important hotkeys. - Mod+Shift+Slash { - show-hotkey-overlay - } - // Suggested binds for running programs: terminal, app launcher, screen locker. - Mod+Return { - spawn "footclient" - } - Mod+Space { - spawn "footclient" - } - Mod+D { - spawn "fuzzel" "--hide-before-typing" "-I" "--placeholder=Select an application:" - } - Mod+Ctrl+semicolon { - spawn "swaylock" "-c" "121212" "-e" "-f" "-F" - } - // You can also use a shell. Do this if you need pipes, multiple commands, etc. - // Note: the entire command goes as a single argument in the end. - // Mod+T { spawn "bash" "-c" "notify-send hello && exec alacritty"; } - XF86AudioRaiseVolume allow-when-locked=true { - spawn "wpctl" "set-volume" "@DEFAULT_AUDIO_SINK@" "0.05+" - } - XF86AudioLowerVolume allow-when-locked=true { - spawn "wpctl" "set-volume" "@DEFAULT_AUDIO_SINK@" "0.05-" - } - XF86AudioMute allow-when-locked=true { - spawn "wpctl" "set-mute" "@DEFAULT_AUDIO_SINK@" "toggle" - } - XF86AudioMicMute allow-when-locked=true { - spawn "wpctl" "set-mute" "@DEFAULT_AUDIO_SOURCE@" "toggle" - } - XF86AudioPlay allow-when-locked=true { - spawn "playerctl" "--player=spotify" "play-pause" - } - XF86AudioStop allow-when-locked=true { - spawn "playerctl" "--all-players" "play-pause" "--ignore-player=spotify" - } - XF86MonBrightnessDown allow-when-locked=true { - spawn "brightnessctl" "set" "5%-" - } - XF86MonBrightnessUp allow-when-locked=true { - spawn "brightnessctl" "set" "5%+" - } - Mod+Q { - close-window - } - // Colemak-DH bindings - Mod+Left { - focus-column-left - } - Mod+Down { - focus-window-down - } - Mod+Up { - focus-window-up - } - Mod+Right { - focus-column-right - } - Mod+M { - focus-column-or-monitor-left - } - // Mod+N { focus-window-down; } - // Mod+E { focus-window-up; } - Mod+I { - focus-column-or-monitor-right - } - Mod+Shift+Left { - move-column-left - } - Mod+Shift+Down { - move-window-down - } - Mod+Shift+Up { - move-window-up - } - Mod+Shift+Right { - move-column-right - } - Mod+Shift+M { - move-column-left-or-to-monitor-left - } - // Mod+Shift+N { move-window-down; } - // Mod+Shift+E { move-window-up; } - Mod+Shift+I { - move-column-right-or-to-monitor-right - } - // Alternative commands that move across workspaces when reaching - // the first or last window in a column. - Mod+N { - focus-window-or-workspace-down - } - Mod+E { - focus-window-or-workspace-up - } - Mod+Shift+N { - move-window-down-or-to-workspace-down - } - Mod+Shift+E { - move-window-up-or-to-workspace-up - } - Mod+A { - focus-column-first - } - Mod+O { - focus-column-last - } - Mod+Shift+A { - move-column-to-first - } - Mod+Shift+O { - move-column-to-last - } - // don't love these honestly - // TODO: Change smart-mouse to LGUI on keyboard? - Mod+Period { - focus-monitor-left - } - Mod+Slash { - focus-monitor-right - } - Mod+Ctrl+Up { - focus-monitor-up - } - Mod+Ctrl+Right { - focus-monitor-right - } - Mod+Ctrl+M { - focus-monitor-left - } - Mod+Ctrl+N { - focus-monitor-down - } - Mod+Ctrl+E { - focus-monitor-up - } - Mod+Ctrl+I { - focus-monitor-right - } - Mod+Shift+Ctrl+Left { - move-column-to-monitor-left - } - Mod+Shift+Ctrl+Down { - move-column-to-monitor-down - } - Mod+Shift+Ctrl+Up { - move-column-to-monitor-up - } - Mod+Shift+Period { - move-column-to-monitor-right - } - Mod+Shift+Comma { - move-column-to-monitor-left - } - Mod+Shift+Ctrl+N { - move-column-to-monitor-down - } - Mod+Shift+Ctrl+E { - move-column-to-monitor-up - } - Mod+Shift+Ctrl+I { - move-column-to-monitor-right - } - // Alternatively, there are commands to move just a single window: - // Mod+Shift+Ctrl+Left { move-window-to-monitor-left; } - // ... - // And you can also move a whole workspace to another monitor: - // Mod+Shift+Ctrl+Left { move-workspace-to-monitor-left; } - // ... - Mod+H { - focus-workspace-down - } - Mod+Comma { - focus-workspace-up - } - Mod+L { - move-workspace-down - } - Mod+U { - move-workspace-up - } - Mod+J { - move-workspace-to-monitor-left - } - Mod+Y { - move-workspace-to-monitor-right - } - Mod+Ctrl+Page_Down { - move-column-to-workspace-down - } - Mod+Ctrl+Page_Up { - move-column-to-workspace-up - } - Mod+Shift+L { - move-column-to-workspace-down - } - Mod+Shift+U { - move-column-to-workspace-up - } - // Alternatively, there are commands to move just a single window: - // Mod+Ctrl+Page_Down { move-window-to-workspace-down; } - // ... - Mod+Shift+Page_Down { - move-workspace-down - } - Mod+Shift+Page_Up { - move-workspace-up - } - Mod+Ctrl+L { - move-workspace-down - } - Mod+Ctrl+U { - move-workspace-up - } - // You can bind mouse wheel scroll ticks using the following syntax. - // These binds will change direction based on the natural-scroll setting. - // - // To avoid scrolling through workspaces really fast, you can use - // the cooldown-ms property. The bind will be rate-limited to this value. - // You can set a cooldown on any bind, but it's most useful for the wheel. - Mod+MouseForward { - focus-column-right - } - Mod+MouseBack { - focus-column-left - } - Mod+WheelScrollDown cooldown-ms=150 { - focus-workspace-down - } - Mod+WheelScrollUp cooldown-ms=150 { - focus-workspace-up - } - Mod+Ctrl+WheelScrollDown cooldown-ms=150 { - move-column-to-workspace-down - } - Mod+Ctrl+WheelScrollUp cooldown-ms=150 { - move-column-to-workspace-up - } - Mod+WheelScrollRight { - focus-column-right - } - Mod+WheelScrollLeft { - focus-column-left - } - Mod+Ctrl+WheelScrollRight { - move-column-right - } - Mod+Ctrl+WheelScrollLeft { - move-column-left - } - // Usually scrolling up and down with Shift in applications results in - // horizontal scrolling; these binds replicate that. - Mod+Shift+WheelScrollDown { - focus-column-right - } - Mod+Shift+WheelScrollUp { - focus-column-left - } - Mod+Ctrl+Shift+WheelScrollDown { - move-column-right - } - Mod+Ctrl+Shift+WheelScrollUp { - move-column-left - } - // Similarly, you can bind touchpad scroll "ticks". - // Touchpad scrolling is continuous, so for these binds it is split into - // discrete intervals. - // These binds are also affected by touchpad's natural-scroll, so these - // example binds are "inverted", since we have natural-scroll enabled for - // touchpads by default. - // Mod+TouchpadScrollDown { spawn "wpctl" "set-volume" "@DEFAULT_AUDIO_SINK@" "0.02+"; } - // Mod+TouchpadScrollUp { spawn "wpctl" "set-volume" "@DEFAULT_AUDIO_SINK@" "0.02-"; } - // 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 - } - Mod+4 { - focus-workspace 4 - } - Mod+5 { - focus-workspace 5 - } - Mod+6 { - focus-workspace 6 - } - Mod+7 { - focus-workspace 7 - } - Mod+8 { - focus-workspace 8 - } - Mod+9 { - focus-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 - } - // Alternatively, there are commands to move just a single window: - // Mod+Ctrl+1 { move-window-to-workspace 1; } - // Switches focus between the current and the previous workspace. - Mod+Tab { - focus-workspace-previous - } - // Adapt the sway-window-switcher and bind it here - // 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+Alt+C { - consume-or-expel-window-left - } - Mod+Alt+D { - consume-or-expel-window-right - } - // Consume one window from the right to the bottom of the focused column. - Mod+Alt+F { - consume-window-into-column - } - // Expel the bottom window from the focused column to the right. - Mod+Alt+P { - expel-window-from-column - } - Mod+R { - switch-preset-column-width - } - // Mod+Shift+R { - // switch-preset-window-height - // } - // Mod+Ctrl+R { - // reset-window-height - // } - 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 - } - // 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%" - } - // Finer height adjustments when in column with other windows. - Mod+Shift+Minus { - set-window-height "-10%" - } - Mod+Shift+Equal { - set-window-height "+10%" - } - // Move the focused window between the floating and the tiling layout. - Mod+Shift+T { - toggle-window-floating - } - Mod+T { - 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"; } - // reload waybar - Mod+Shift+W { - spawn "systemctl" "--user" "restart" "waybar" - // spawn "killall" "-SIGUSR2" "waybar" - } - Mod+S { - screenshot - } - Mod+Ctrl+S { - screenshot-screen - } - Mod+Shift+S { - screenshot-window - } - Mod+Alt+S { - spawn "~/dev/wayland-utils/recorder/recorder.sh" "screen" - } - Mod+Shift+Alt+S { - spawn "~/dev/wayland-utils/recorder/recorder.sh" "region" - } - Mod+Escape { - spawn "~/dev/wayland-utils/niri-switcher/window-picker.py" - } - Mod+semicolon { - spawn "~/dev/wayland-utils/foot/foot-command.py" - } - Mod+P { - spawn "clipcat-menu" - } - // 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+Ctrl+Escape allow-inhibiting=false { - toggle-keyboard-shortcuts-inhibit - } - // The quit action will show a confirmation dialog to avoid accidental exits. - Mod+Shift+semicolon { - spawn "~/dev/utils/waymoji/waymoji.fish" - } - // Mod+Shift+semicolon { - // 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 - } -} - diff --git a/.config/niri/config.kdl##template b/.config/niri/config.kdl##template index f98739a1..87c9db91 100644 --- a/.config/niri/config.kdl##template +++ b/.config/niri/config.kdl##template @@ -1,3 +1,5 @@ +// WARNING: Do not edit config.kdl +// It was generated by processing {{ yadm.source }} {% if yadm.hostname == "dpad" %} output "eDP-1" { scale 1.5