small changes

This commit is contained in:
2026-03-09 15:52:00 +00:00
parent 90b907eb3d
commit d92c98796a
3 changed files with 371 additions and 358 deletions
+360 -357
View File
@@ -9,150 +9,150 @@ include "./dms/wpblur.kdl"
// https://github.com/YaLTeR/niri/wiki/Configuration:-Input // https://github.com/YaLTeR/niri/wiki/Configuration:-Input
input { input {
keyboard { keyboard {
xkb { xkb {
// For more information, see xkeyboard-config(7). // For more information, see xkeyboard-config(7).
layout "us,us" layout "us,us"
variant ",alt-intl" variant ",alt-intl"
options "grp:alt_space_toggle,compose:ralt" options "grp:alt_space_toggle,compose:ralt"
} }
// Enable numlock on startup, omitting this setting disables it. // Enable numlock on startup, omitting this setting disables it.
numlock numlock
} }
// Next sections include libinput settings. // Next sections include libinput settings.
// Omitting settings disables them, or leaves them at their default values. // Omitting settings disables them, or leaves them at their default values.
touchpad { touchpad {
// off // off
tap tap
// dwt // dwt
// dwtp // dwtp
// drag false // drag false
// drag-lock // drag-lock
natural-scroll natural-scroll
// accel-speed 0.2 // accel-speed 0.2
// accel-profile "flat" // accel-profile "flat"
// scroll-method "two-finger" // scroll-method "two-finger"
// disabled-on-external-mouse // disabled-on-external-mouse
} }
mouse { mouse {
// off // off
// natural-scroll // natural-scroll
// accel-speed 0.2 // accel-speed 0.2
// accel-profile "flat" // accel-profile "flat"
// scroll-method "no-scroll" // scroll-method "no-scroll"
} }
trackpoint { trackpoint {
// off // off
// natural-scroll // natural-scroll
// accel-speed 0.2 // accel-speed 0.2
// accel-profile "flat" // accel-profile "flat"
// scroll-method "on-button-down" // scroll-method "on-button-down"
// scroll-button 273 // scroll-button 273
// middle-emulation // middle-emulation
} }
// Uncomment this to make the mouse warp to the center of newly focused windows. // Uncomment this to make the mouse warp to the center of newly focused windows.
// warp-mouse-to-focus // warp-mouse-to-focus
// Focus windows and outputs automatically when moving the mouse into them. // 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. // 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%"
} }
// You can configure outputs by their name, which you can find // You can configure outputs by their name, which you can find
// by running `niri msg outputs` while inside a niri instance. // by running `niri msg outputs` while inside a niri instance.
// https://github.com/YaLTeR/niri/wiki/Configuration:-Outputs // https://github.com/YaLTeR/niri/wiki/Configuration:-Outputs
output "DP-1" { output "DP-1" {
// Uncomment this line to disable this output. // Uncomment this line to disable this output.
// off // off
// If the refresh rate is omitted, niri will pick the highest refresh rate // If the refresh rate is omitted, niri will pick the highest refresh rate
// for the resolution. // for the resolution.
// If the mode is omitted altogether or is invalid, niri will pick one automatically. // If the mode is omitted altogether or is invalid, niri will pick one automatically.
// mode "3840x2160@240" // mode "3840x2160@240"
mode "3840x2160@120" mode "3840x2160@120"
// You can use integer or fractional scale, for example use 1.5 for 150% scale. // You can use integer or fractional scale, for example use 1.5 for 150% scale.
scale 2 scale 2
// Transform allows to rotate the output counter-clockwise, valid values are: // Transform allows to rotate the output counter-clockwise, valid values are:
// normal, 90, 180, 270, flipped, flipped-90, flipped-180 and flipped-270. // normal, 90, 180, 270, flipped, flipped-90, flipped-180 and flipped-270.
transform "normal" transform "normal"
// Position of the output in the global coordinate space. // Position of the output in the global coordinate space.
// This affects directional monitor actions like "focus-monitor-left", and cursor movement. // This affects directional monitor actions like "focus-monitor-left", and cursor movement.
// The cursor can only move between directly adjacent outputs. // The cursor can only move between directly adjacent outputs.
// Output scale and rotation has to be taken into account for positioning: // Output scale and rotation has to be taken into account for positioning:
// outputs are sized in logical, or scaled, pixels. // outputs are sized in logical, or scaled, pixels.
// For example, a 3840×2160 output with scale 2.0 will have a logical size of 1920×1080, // For example, a 3840×2160 output with scale 2.0 will have a logical size of 1920×1080,
// so to put another output directly adjacent to it on the right, set its x to 1920. // so to put another output directly adjacent to it on the right, set its x to 1920.
// If the position is unset or results in an overlap, the output is instead placed // If the position is unset or results in an overlap, the output is instead placed
// automatically. // automatically.
// position x=2400 y=0 // position x=2400 y=0
} }
// Settings that influence how windows are positioned and sized. // Settings that influence how windows are positioned and sized.
// Find more information on the wiki: // Find more information on the wiki:
// https://github.com/YaLTeR/niri/wiki/Configuration:-Layout // https://github.com/YaLTeR/niri/wiki/Configuration:-Layout
layout { layout {
gaps 16 gaps 16
center-focused-column "on-overflow" center-focused-column "on-overflow"
preset-column-widths { preset-column-widths {
proportion 0.5 proportion 0.5
proportion 0.66667 proportion 0.66667
proportion 0.75 proportion 0.75
proportion 0.95 proportion 0.95
// Fixed sets the width in logical pixels exactly. // Fixed sets the width in logical pixels exactly.
// fixed 1920 // fixed 1920
} }
// You can also customize the heights that "switch-preset-window-height" (Mod+Shift+R) toggles between. // You can also customize the heights that "switch-preset-window-height" (Mod+Shift+R) toggles between.
// preset-window-heights { } // preset-window-heights { }
// You can change the default width of the new windows. // You can change the default width of the new windows.
default-column-width { proportion 0.66667; } default-column-width { proportion 0.66667; }
// If you leave the brackets empty, the windows themselves will decide their initial width. // If you leave the brackets empty, the windows themselves will decide their initial width.
// default-column-width {} // default-column-width {}
// You can change how the focus ring looks. // You can change how the focus ring looks.
focus-ring { focus-ring {
// Uncomment this line to disable the focus ring. // Uncomment this line to disable the focus ring.
// off // off
// How many logical pixels the ring extends out from the windows. // How many logical pixels the ring extends out from the windows.
width 2 width 2
} }
// You can also add a border. It's similar to the focus ring, but always visible. // You can also add a border. It's similar to the focus ring, but always visible.
border { border {
// The settings are the same as for the focus ring. // The settings are the same as for the focus ring.
// If you enable the border, you probably want to disable the focus ring. // If you enable the border, you probably want to disable the focus ring.
// off // off
width 2 width 2
} }
// You can enable drop shadows for windows. // You can enable drop shadows for windows.
shadow { shadow {
// Uncomment the next line to enable shadows. // Uncomment the next line to enable shadows.
on on
// Softness controls the shadow blur radius. // Softness controls the shadow blur radius.
softness 30 softness 30
// Spread expands the shadow. // Spread expands the shadow.
spread 7 spread 7
// Offset moves the shadow relative to the window. // Offset moves the shadow relative to the window.
offset x=0 y=6 offset x=0 y=6
} }
} }
spawn-at-startup "xwayland-satellite" spawn-at-startup "xwayland-satellite"
@@ -165,11 +165,11 @@ screenshot-path "~/Pictures/Screenshots/Screenshot from %Y-%m-%d %H-%M-%S.png"
// The wiki explains how to configure individual animations: // The wiki explains how to configure individual animations:
// https://github.com/YaLTeR/niri/wiki/Configuration:-Animations // https://github.com/YaLTeR/niri/wiki/Configuration:-Animations
animations { animations {
// Uncomment to turn off all animations. // Uncomment to turn off all animations.
// off // off
// Slow down all animations by this factor. Values below 1 speed them up instead. // Slow down all animations by this factor. Values below 1 speed them up instead.
slowdown 0.5 slowdown 0.5
} }
// Window rules let you adjust behavior for individual windows. // Window rules let you adjust behavior for individual windows.
@@ -179,54 +179,54 @@ animations {
// Work around WezTerm's initial configure bug // Work around WezTerm's initial configure bug
// by setting an empty default-column-width. // by setting an empty default-column-width.
window-rule { window-rule {
// This regular expression is intentionally made as specific as possible, // This regular expression is intentionally made as specific as possible,
// since this is the default config, and we want no false positives. // since this is the default config, and we want no false positives.
// You can get away with just app-id="wezterm" if you want. // You can get away with just app-id="wezterm" if you want.
match app-id=r#"^org\.wezfurlong\.wezterm$"# match app-id=r#"^org\.wezfurlong\.wezterm$"#
default-column-width {} default-column-width {}
} }
// Open the Firefox picture-in-picture player as floating by default. // Open the Firefox picture-in-picture player as floating by default.
window-rule { window-rule {
// This app-id regular expression will work for both: // This app-id regular expression will work for both:
// - host Firefox (app-id is "firefox") // - host Firefox (app-id is "firefox")
// - Flatpak Firefox (app-id is "org.mozilla.firefox") // - Flatpak Firefox (app-id is "org.mozilla.firefox")
match app-id=r#"firefox$"# title="^Picture-in-Picture$" match app-id=r#"firefox$"# title="^Picture-in-Picture$"
open-floating true open-floating true
} }
// Do the same for Zen Browser. // Do the same for Zen Browser.
window-rule { window-rule {
match app-id=r#"zen$"# title="^Picture-in-Picture$" match app-id=r#"zen$"# title="^Picture-in-Picture$"
open-floating true open-floating true
} }
// Block out sensitive components from screen capture. // Block out sensitive components from screen capture.
window-rule { window-rule {
match app-id=r#"legcord$"# match app-id=r#"legcord$"#
match app-id=r#"Slack$"# match app-id=r#"Slack$"#
block-out-from "screen-capture" block-out-from "screen-capture"
} }
// Block out sensitive components from screencasts // Block out sensitive components from screencasts
layer-rule { layer-rule {
match namespace="^dms:clipboard$" match namespace="^dms:clipboard$"
match namespace="^dms:notification" match namespace="^dms:notification"
block-out-from "screen-capture" block-out-from "screen-capture"
} }
window-rule { window-rule {
match app-id="steam" title=r#"^notificationtoasts_\d+_desktop$"# match app-id="steam" title=r#"^notificationtoasts_\d+_desktop$"#
default-floating-position x=10 y=10 relative-to="bottom-right" default-floating-position x=10 y=10 relative-to="bottom-right"
} }
// Example: enable rounded corners for all windows. // Example: enable rounded corners for all windows.
// (This example rule is commented out with a "/-" in front.) // (This example rule is commented out with a "/-" in front.)
window-rule { window-rule {
geometry-corner-radius 8 geometry-corner-radius 8
clip-to-geometry true clip-to-geometry true
} }
hotkey-overlay { hotkey-overlay {
@@ -253,262 +253,262 @@ binds {
XF86AudioNext allow-when-locked=true { spawn "playerctl" "next"; } XF86AudioNext allow-when-locked=true { spawn "playerctl" "next"; }
XF86AudioPrev allow-when-locked=true { spawn "playerctl" "previous"; } XF86AudioPrev allow-when-locked=true { spawn "playerctl" "previous"; }
Mod+O repeat=false { toggle-overview; } Mod+O repeat=false { toggle-overview; }
Mod+Q { close-window; } Mod+Q { close-window; }
Mod+Left { focus-column-left; } Mod+Left { focus-column-left; }
Mod+Down { focus-window-or-workspace-down; } Mod+Down { focus-window-or-workspace-down; }
Mod+Up { focus-window-or-workspace-up; } Mod+Up { focus-window-or-workspace-up; }
Mod+Right { focus-column-right; } Mod+Right { focus-column-right; }
// Mod+H { focus-column-left; } // Mod+H { focus-column-left; }
// Mod+J { focus-window-down; } // Mod+J { focus-window-down; }
// Mod+K { focus-window-up; } // Mod+K { focus-window-up; }
// Mod+L { focus-column-right; } // Mod+L { focus-column-right; }
Mod+Shift+Left { move-column-left; } Mod+Shift+Left { move-column-left; }
Mod+Shift+Down { move-window-down; } Mod+Shift+Down { move-window-down; }
Mod+Shift+Up { move-window-up; } Mod+Shift+Up { move-window-up; }
Mod+Shift+Right { move-column-right; } Mod+Shift+Right { move-column-right; }
Mod+Shift+H { move-column-left; } Mod+Shift+H { move-column-left; }
Mod+Shift+J { move-window-down; } Mod+Shift+J { move-window-down; }
Mod+Shift+K { move-window-up; } Mod+Shift+K { move-window-up; }
Mod+Shift+L { move-column-right; } Mod+Shift+L { move-column-right; }
// Alternative commands that move across workspaces when reaching // Alternative commands that move across workspaces when reaching
// the first or last window in a column. // the first or last window in a column.
// Mod+J { focus-window-or-workspace-down; } // Mod+J { focus-window-or-workspace-down; }
// Mod+K { focus-window-or-workspace-up; } // Mod+K { focus-window-or-workspace-up; }
// Mod+Shift+J { move-window-down-or-to-workspace-down; } // Mod+Shift+J { move-window-down-or-to-workspace-down; }
// Mod+Shift+K { move-window-up-or-to-workspace-up; } // Mod+Shift+K { move-window-up-or-to-workspace-up; }
Mod+Home { focus-column-first; } Mod+Home { focus-column-first; }
Mod+End { focus-column-last; } Mod+End { focus-column-last; }
Mod+Shift+Home { move-column-to-first; } Mod+Shift+Home { move-column-to-first; }
Mod+Shift+End { move-column-to-last; } Mod+Shift+End { move-column-to-last; }
// Mod+Shift+Left { focus-monitor-left; } // Mod+Shift+Left { focus-monitor-left; }
// Mod+Shift+Down { focus-monitor-down; } // Mod+Shift+Down { focus-monitor-down; }
// Mod+Shift+Up { focus-monitor-up; } // Mod+Shift+Up { focus-monitor-up; }
// Mod+Shift+Right { focus-monitor-right; } // Mod+Shift+Right { focus-monitor-right; }
// Mod+Shift+H { focus-monitor-left; } // Mod+Shift+H { focus-monitor-left; }
// Mod+Shift+J { focus-monitor-down; } // Mod+Shift+J { focus-monitor-down; }
// Mod+Shift+K { focus-monitor-up; } // Mod+Shift+K { focus-monitor-up; }
// Mod+Shift+L { focus-monitor-right; } // Mod+Shift+L { focus-monitor-right; }
// //
// Mod+Shift+Ctrl+Left { move-column-to-monitor-left; } // Mod+Shift+Ctrl+Left { move-column-to-monitor-left; }
// Mod+Shift+Ctrl+Down { move-column-to-monitor-down; } // Mod+Shift+Ctrl+Down { move-column-to-monitor-down; }
// Mod+Shift+Ctrl+Up { move-column-to-monitor-up; } // Mod+Shift+Ctrl+Up { move-column-to-monitor-up; }
// Mod+Shift+Ctrl+Right { move-column-to-monitor-right; } // Mod+Shift+Ctrl+Right { move-column-to-monitor-right; }
// Mod+Shift+Ctrl+H { move-column-to-monitor-left; } // Mod+Shift+Ctrl+H { move-column-to-monitor-left; }
// Mod+Shift+Ctrl+J { move-column-to-monitor-down; } // Mod+Shift+Ctrl+J { move-column-to-monitor-down; }
// Mod+Shift+Ctrl+K { move-column-to-monitor-up; } // Mod+Shift+Ctrl+K { move-column-to-monitor-up; }
// Mod+Shift+Ctrl+L { move-column-to-monitor-right; } // Mod+Shift+Ctrl+L { move-column-to-monitor-right; }
// Alternatively, there are commands to move just a single window: // Alternatively, there are commands to move just a single window:
// Mod+Shift+Ctrl+Left { move-window-to-monitor-left; } // Mod+Shift+Ctrl+Left { move-window-to-monitor-left; }
// ... // ...
// And you can also move a whole workspace to another monitor: // And you can also move a whole workspace to another monitor:
// Mod+Shift+Ctrl+Left { move-workspace-to-monitor-left; } // Mod+Shift+Ctrl+Left { move-workspace-to-monitor-left; }
// ... // ...
Mod+Page_Down { focus-workspace-down; } Mod+Page_Down { focus-workspace-down; }
Alt+Ctrl+Page_Down { focus-workspace-down; } Alt+Ctrl+Page_Down { focus-workspace-down; }
Mod+Page_Up { focus-workspace-up; } Mod+Page_Up { focus-workspace-up; }
Alt+Ctrl+Page_Up { focus-workspace-up; } Alt+Ctrl+Page_Up { focus-workspace-up; }
Mod+U { focus-workspace-down; } Mod+U { focus-workspace-down; }
Alt+Ctrl+U { focus-workspace-down; } Alt+Ctrl+U { focus-workspace-down; }
Mod+I { focus-workspace-up; } Mod+I { focus-workspace-up; }
Alt+Ctrl+I { focus-workspace-up; } Alt+Ctrl+I { focus-workspace-up; }
Mod+Shift+Page_Down { move-column-to-workspace-down; } Mod+Shift+Page_Down { move-column-to-workspace-down; }
Alt+Ctrl+Shift+Page_Down { move-column-to-workspace-down; } Alt+Ctrl+Shift+Page_Down { move-column-to-workspace-down; }
Mod+Shift+Page_Up { move-column-to-workspace-up; } Mod+Shift+Page_Up { move-column-to-workspace-up; }
Alt+Ctrl+Shift+Page_Up { move-column-to-workspace-up; } Alt+Ctrl+Shift+Page_Up { move-column-to-workspace-up; }
Mod+Shift+U { move-column-to-workspace-down; } Mod+Shift+U { move-column-to-workspace-down; }
Alt+Ctrl+Shift+U { move-column-to-workspace-down; } Alt+Ctrl+Shift+U { move-column-to-workspace-down; }
Mod+Shift+I { move-column-to-workspace-up; } Mod+Shift+I { move-column-to-workspace-up; }
Alt+Ctrl+Shift+I { move-column-to-workspace-up; } Alt+Ctrl+Shift+I { move-column-to-workspace-up; }
// Alternatively, there are commands to move just a single window: // Alternatively, there are commands to move just a single window:
// Mod+Ctrl+Page_Down { move-window-to-workspace-down; } // Mod+Ctrl+Page_Down { move-window-to-workspace-down; }
// ... // ...
Mod+Ctrl+Page_Down { move-workspace-down; } Mod+Ctrl+Page_Down { move-workspace-down; }
Mod+Ctrl+Page_Up { move-workspace-up; } Mod+Ctrl+Page_Up { move-workspace-up; }
Mod+Ctrl+U { move-workspace-down; } Mod+Ctrl+U { move-workspace-down; }
Mod+Ctrl+I { move-workspace-up; } Mod+Ctrl+I { move-workspace-up; }
// You can bind mouse wheel scroll ticks using the following syntax. // You can bind mouse wheel scroll ticks using the following syntax.
// These binds will change direction based on the natural-scroll setting. // These binds will change direction based on the natural-scroll setting.
// //
// To avoid scrolling through workspaces really fast, you can use // To avoid scrolling through workspaces really fast, you can use
// the cooldown-ms property. The bind will be rate-limited to this value. // 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. // You can set a cooldown on any bind, but it's most useful for the wheel.
Mod+WheelScrollDown cooldown-ms=150 { focus-workspace-down; } Mod+WheelScrollDown cooldown-ms=150 { focus-workspace-down; }
Mod+WheelScrollUp cooldown-ms=150 { focus-workspace-up; } Mod+WheelScrollUp cooldown-ms=150 { focus-workspace-up; }
Mod+Ctrl+WheelScrollDown cooldown-ms=150 { move-column-to-workspace-down; } Mod+Ctrl+WheelScrollDown cooldown-ms=150 { move-column-to-workspace-down; }
Mod+Ctrl+WheelScrollUp cooldown-ms=150 { move-column-to-workspace-up; } Mod+Ctrl+WheelScrollUp cooldown-ms=150 { move-column-to-workspace-up; }
Mod+WheelScrollRight { focus-column-right; } Mod+WheelScrollRight { focus-column-right; }
Mod+WheelScrollLeft { focus-column-left; } Mod+WheelScrollLeft { focus-column-left; }
Mod+Ctrl+WheelScrollRight { move-column-right; } Mod+Ctrl+WheelScrollRight { move-column-right; }
Mod+Ctrl+WheelScrollLeft { move-column-left; } Mod+Ctrl+WheelScrollLeft { move-column-left; }
// Usually scrolling up and down with Shift in applications results in // Usually scrolling up and down with Shift in applications results in
// horizontal scrolling; these binds replicate that. // horizontal scrolling; these binds replicate that.
Mod+Shift+WheelScrollDown { focus-column-right; } Mod+Shift+WheelScrollDown { focus-column-right; }
Mod+Shift+WheelScrollUp { focus-column-left; } Mod+Shift+WheelScrollUp { focus-column-left; }
Mod+Ctrl+Shift+WheelScrollDown { move-column-right; } Mod+Ctrl+Shift+WheelScrollDown { move-column-right; }
Mod+Ctrl+Shift+WheelScrollUp { move-column-left; } Mod+Ctrl+Shift+WheelScrollUp { move-column-left; }
// Similarly, you can bind touchpad scroll "ticks". // Similarly, you can bind touchpad scroll "ticks".
// Touchpad scrolling is continuous, so for these binds it is split into // Touchpad scrolling is continuous, so for these binds it is split into
// discrete intervals. // discrete intervals.
// These binds are also affected by touchpad's natural-scroll, so these // These binds are also affected by touchpad's natural-scroll, so these
// example binds are "inverted", since we have natural-scroll enabled for // example binds are "inverted", since we have natural-scroll enabled for
// touchpads by default. // touchpads by default.
// Mod+TouchpadScrollDown { spawn "wpctl" "set-volume" "@DEFAULT_AUDIO_SINK@" "0.02+"; } // Mod+TouchpadScrollDown { spawn "wpctl" "set-volume" "@DEFAULT_AUDIO_SINK@" "0.02+"; }
// Mod+TouchpadScrollUp { 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 // You can refer to workspaces by index. However, keep in mind that
// niri is a dynamic workspace system, so these commands are kind of // niri is a dynamic workspace system, so these commands are kind of
// "best effort". Trying to refer to a workspace index bigger than // "best effort". Trying to refer to a workspace index bigger than
// the current workspace count will instead refer to the bottommost // the current workspace count will instead refer to the bottommost
// (empty) workspace. // (empty) workspace.
// //
// For example, with 2 workspaces + 1 empty, indices 3, 4, 5 and so on // For example, with 2 workspaces + 1 empty, indices 3, 4, 5 and so on
// will all refer to the 3rd workspace. // will all refer to the 3rd workspace.
Mod+1 { focus-workspace 1; } Mod+1 { focus-workspace 1; }
Mod+2 { focus-workspace 2; } Mod+2 { focus-workspace 2; }
Mod+3 { focus-workspace 3; } Mod+3 { focus-workspace 3; }
Mod+4 { focus-workspace 4; } Mod+4 { focus-workspace 4; }
Mod+5 { focus-workspace 5; } Mod+5 { focus-workspace 5; }
Mod+6 { focus-workspace 6; } Mod+6 { focus-workspace 6; }
Mod+7 { focus-workspace 7; } Mod+7 { focus-workspace 7; }
Mod+8 { focus-workspace 8; } Mod+8 { focus-workspace 8; }
Mod+9 { focus-workspace 9; } Mod+9 { focus-workspace 9; }
Alt+Ctrl+1 { focus-workspace 1; } Alt+Ctrl+1 { focus-workspace 1; }
Alt+Ctrl+2 { focus-workspace 2; } Alt+Ctrl+2 { focus-workspace 2; }
Alt+Ctrl+3 { focus-workspace 3; } Alt+Ctrl+3 { focus-workspace 3; }
Alt+Ctrl+4 { focus-workspace 4; } Alt+Ctrl+4 { focus-workspace 4; }
Alt+Ctrl+5 { focus-workspace 5; } Alt+Ctrl+5 { focus-workspace 5; }
Alt+Ctrl+6 { focus-workspace 6; } Alt+Ctrl+6 { focus-workspace 6; }
Alt+Ctrl+7 { focus-workspace 7; } Alt+Ctrl+7 { focus-workspace 7; }
Alt+Ctrl+8 { focus-workspace 8; } Alt+Ctrl+8 { focus-workspace 8; }
Alt+Ctrl+9 { focus-workspace 9; } Alt+Ctrl+9 { focus-workspace 9; }
Mod+Shift+1 { move-column-to-workspace 1; } Mod+Shift+1 { move-column-to-workspace 1; }
Alt+Ctrl+Shift+1 { move-column-to-workspace 1; } Alt+Ctrl+Shift+1 { move-column-to-workspace 1; }
Mod+Shift+2 { move-column-to-workspace 2; } Mod+Shift+2 { move-column-to-workspace 2; }
Alt+Ctrl+Shift+2 { move-column-to-workspace 2; } Alt+Ctrl+Shift+2 { move-column-to-workspace 2; }
Mod+Shift+3 { move-column-to-workspace 3; } Mod+Shift+3 { move-column-to-workspace 3; }
Alt+Ctrl+Shift+3 { move-column-to-workspace 3; } Alt+Ctrl+Shift+3 { move-column-to-workspace 3; }
Mod+Shift+4 { move-column-to-workspace 4; } Mod+Shift+4 { move-column-to-workspace 4; }
Alt+Ctrl+Shift+4 { move-column-to-workspace 4; } Alt+Ctrl+Shift+4 { move-column-to-workspace 4; }
Mod+Shift+5 { move-column-to-workspace 5; } Mod+Shift+5 { move-column-to-workspace 5; }
Alt+Ctrl+Shift+5 { move-column-to-workspace 5; } Alt+Ctrl+Shift+5 { move-column-to-workspace 5; }
Mod+Shift+6 { move-column-to-workspace 6; } Mod+Shift+6 { move-column-to-workspace 6; }
Alt+Ctrl+Shift+6 { move-column-to-workspace 6; } Alt+Ctrl+Shift+6 { move-column-to-workspace 6; }
Mod+Shift+7 { move-column-to-workspace 7; } Mod+Shift+7 { move-column-to-workspace 7; }
Alt+Ctrl+Shift+7 { move-column-to-workspace 7; } Alt+Ctrl+Shift+7 { move-column-to-workspace 7; }
Mod+Shift+8 { move-column-to-workspace 8; } Mod+Shift+8 { move-column-to-workspace 8; }
Alt+Ctrl+Shift+8 { move-column-to-workspace 8; } Alt+Ctrl+Shift+8 { move-column-to-workspace 8; }
Mod+Shift+9 { move-column-to-workspace 9; } Mod+Shift+9 { move-column-to-workspace 9; }
Alt+Ctrl+Shift+9 { move-column-to-workspace 9; } Alt+Ctrl+Shift+9 { move-column-to-workspace 9; }
// Alternatively, there are commands to move just a single window: // Alternatively, there are commands to move just a single window:
// Mod+Ctrl+1 { move-window-to-workspace 1; } // Mod+Ctrl+1 { move-window-to-workspace 1; }
// Switches focus between the current and the previous workspace. // Switches focus between the current and the previous workspace.
// Mod+Tab { focus-workspace-previous; } // Mod+Tab { focus-workspace-previous; }
// The following binds move the focused window in and out of a column. // 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 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. // If the window is already in a column, they will expel it out.
Mod+BracketLeft { consume-or-expel-window-left; } Mod+BracketLeft { consume-or-expel-window-left; }
Alt+Ctrl+BracketLeft { consume-or-expel-window-left; } Alt+Ctrl+BracketLeft { consume-or-expel-window-left; }
Mod+BracketRight { consume-or-expel-window-right; } Mod+BracketRight { consume-or-expel-window-right; }
Alt+Ctrl+BracketRight { consume-or-expel-window-right; } Alt+Ctrl+BracketRight { consume-or-expel-window-right; }
// Consume one window from the right to the bottom of the focused column. // Consume one window from the right to the bottom of the focused column.
Mod+Comma { consume-window-into-column; } Mod+Comma { consume-window-into-column; }
// Expel the bottom window from the focused column to the right. // Expel the bottom window from the focused column to the right.
Mod+Period { expel-window-from-column; } Mod+Period { expel-window-from-column; }
Mod+R { switch-preset-column-width; } Mod+R { switch-preset-column-width; }
Mod+Shift+R { switch-preset-window-height; } Mod+Shift+R { switch-preset-window-height; }
Mod+Ctrl+R { reset-window-height; } Mod+Ctrl+R { reset-window-height; }
Mod+F { maximize-column; } Mod+F { maximize-column; }
Mod+Shift+F { fullscreen-window; } Mod+Shift+F { fullscreen-window; }
// Expand the focused column to space not taken up by other fully visible columns. // Expand the focused column to space not taken up by other fully visible columns.
// Makes the column "fill the rest of the space". // Makes the column "fill the rest of the space".
Mod+Ctrl+F { expand-column-to-available-width; } Mod+Ctrl+F { expand-column-to-available-width; }
Mod+C { center-column; } Mod+C { center-column; }
// Center all fully visible columns on screen. // Center all fully visible columns on screen.
Mod+Ctrl+C { center-visible-columns; } Mod+Ctrl+C { center-visible-columns; }
// Finer width adjustments. // Finer width adjustments.
// This command can also: // This command can also:
// * set width in pixels: "1000" // * set width in pixels: "1000"
// * adjust width in pixels: "-5" or "+5" // * adjust width in pixels: "-5" or "+5"
// * set width as a percentage of screen width: "25%" // * set width as a percentage of screen width: "25%"
// * adjust width as a percentage of screen width: "-10%" or "+10%" // * 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, // 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. // set-column-width "100" will make the column occupy 200 physical screen pixels.
Mod+Minus { set-column-width "-10%"; } Mod+Minus { set-column-width "-10%"; }
Alt+Ctrl+Minus { set-column-width "-10%"; } Alt+Ctrl+Minus { set-column-width "-10%"; }
Mod+Equal { set-column-width "+10%"; } Mod+Equal { set-column-width "+10%"; }
Alt+Ctrl+Equal { set-column-width "+10%"; } Alt+Ctrl+Equal { set-column-width "+10%"; }
// Finer height adjustments when in column with other windows. // Finer height adjustments when in column with other windows.
Mod+Shift+Minus { set-window-height "-10%"; } Mod+Shift+Minus { set-window-height "-10%"; }
Alt+Ctrl+Shift+Minus { set-window-height "-10%"; } Alt+Ctrl+Shift+Minus { set-window-height "-10%"; }
Mod+Shift+Equal { set-window-height "+10%"; } Mod+Shift+Equal { set-window-height "+10%"; }
Alt+Ctrl+Shift+Equal { set-window-height "+10%"; } Alt+Ctrl+Shift+Equal { set-window-height "+10%"; }
// Move the focused window between the floating and the tiling layout. // Move the focused window between the floating and the tiling layout.
Mod+V { toggle-window-floating; } Mod+V { toggle-window-floating; }
Alt+Ctrl+V { toggle-window-floating; } Alt+Ctrl+V { toggle-window-floating; }
Mod+Shift+V { switch-focus-between-floating-and-tiling; } Mod+Shift+V { switch-focus-between-floating-and-tiling; }
Alt+Ctrl+Shift+V { switch-focus-between-floating-and-tiling; } Alt+Ctrl+Shift+V { switch-focus-between-floating-and-tiling; }
// Toggle tabbed column display mode. // Toggle tabbed column display mode.
// Windows in this column will appear as vertical tabs, // Windows in this column will appear as vertical tabs,
// rather than stacked on top of each other. // rather than stacked on top of each other.
Mod+W { toggle-column-tabbed-display; } Mod+W { toggle-column-tabbed-display; }
// Actions to switch layouts. // Actions to switch layouts.
// Note: if you uncomment these, make sure you do NOT have // Note: if you uncomment these, make sure you do NOT have
// a matching layout switch hotkey configured in xkb options above. // a matching layout switch hotkey configured in xkb options above.
// Having both at once on the same hotkey will break the switching, // 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). // since it will switch twice upon pressing the hotkey (once by xkb, once by niri).
// Mod+Space { switch-layout "next"; } // Mod+Space { switch-layout "next"; }
// Mod+Shift+Space { switch-layout "prev"; } // Mod+Shift+Space { switch-layout "prev"; }
Mod+P { spawn "~/.config/niri/copy-latest-screenshot.sh"; } Mod+P { spawn "~/.config/niri/copy-latest-screenshot.sh"; }
Mod+Ctrl+P { screenshot-screen; } Mod+Ctrl+P { screenshot-screen; }
Mod+Alt+P { screenshot-window; } Mod+Alt+P { screenshot-window; }
// Applications such as remote-desktop clients and software KVM switches may // Applications such as remote-desktop clients and software KVM switches may
// request that niri stops processing the keyboard shortcuts defined here // 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. // 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, // It's a good idea to bind an escape hatch to toggle the inhibitor,
// so a buggy application can't hold your session hostage. // so a buggy application can't hold your session hostage.
// //
// The allow-inhibiting=false property can be applied to other binds as well, // 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. // which ensures niri always processes them, even when an inhibitor is active.
Mod+Escape allow-inhibiting=false { toggle-keyboard-shortcuts-inhibit; } Mod+Escape allow-inhibiting=false { toggle-keyboard-shortcuts-inhibit; }
// The quit action will show a confirmation dialog to avoid accidental exits. // The quit action will show a confirmation dialog to avoid accidental exits.
Mod+Shift+E { quit; } Mod+Shift+E { quit; }
// Powers off the monitors. To turn them back on, do any input like // Powers off the monitors. To turn them back on, do any input like
// moving the mouse or pressing any other key. // moving the mouse or pressing any other key.
Mod+Shift+P { power-off-monitors; } Mod+Shift+P { power-off-monitors; }
// DMS // DMS
Mod+Space hotkey-overlay-title="Application Launcher" { Mod+Space hotkey-overlay-title="Application Launcher" {
@@ -525,7 +525,7 @@ binds {
} }
Ctrl+Alt+Delete hotkey-overlay-title="Task Manager" { Ctrl+Alt+Delete hotkey-overlay-title="Task Manager" {
spawn "dms" "ipc" "call" "processlist" "toggle"; spawn "dms" "ipc" "call" "processlist" "toggle";
} }
Mod+N hotkey-overlay-title="Notification Center" { Mod+N hotkey-overlay-title="Notification Center" {
spawn "dms" "ipc" "call" "notifications" "toggle"; spawn "dms" "ipc" "call" "notifications" "toggle";
} }
@@ -536,7 +536,7 @@ binds {
spawn "dms" "ipc" "call" "dankdash" "wallpaper"; spawn "dms" "ipc" "call" "dankdash" "wallpaper";
} }
// Mod+Shift+N hotkey-overlay-title="Notepad" { // Mod+Shift+N hotkey-overlay-title="Notepad" {
// spawn "dms" "ipc" "call" "notepad" "toggle"; // spawn "dms" "ipc" "call" "notepad" "toggle";
// } // }
Super+L hotkey-overlay-title="Lock Screen" { Super+L hotkey-overlay-title="Lock Screen" {
spawn "dms" "ipc" "call" "lock" "lock"; spawn "dms" "ipc" "call" "lock" "lock";
@@ -570,8 +570,11 @@ binds {
} }
environment { environment {
ELECTRON_OZONE_PLATFORM_HINT "auto" ELECTRON_OZONE_PLATFORM_HINT "auto"
DISPLAY ":0" DISPLAY ":0"
// GTK/QT theming - Qt apps use GTK3 style
QT_QPA_PLATFORMTHEME "gtk3"
QT_QPA_PLATFORMTHEME_QT6 "gtk3"
// NOTE: leaving IM modules unset so dead-key compose uses ~/.XCompose // NOTE: leaving IM modules unset so dead-key compose uses ~/.XCompose
// GTK_IM_MODULE "ibus" // GTK_IM_MODULE "ibus"
// QT_IM_MODULE "ibus" // QT_IM_MODULE "ibus"
@@ -579,8 +582,8 @@ environment {
} }
cursor { cursor {
hide-when-typing hide-when-typing
// hide-after-inactive-ms 1000 // hide-after-inactive-ms 1000
} }
// Required for clipboard history integration // Required for clipboard history integration
@@ -593,5 +596,5 @@ spawn-at-startup "/usr/lib/mate-polkit/polkit-mate-authentication-agent-1"
// If using niri newer than 271534e115e5915231c99df287bbfe396185924d (~aug 17 2025) // If using niri newer than 271534e115e5915231c99df287bbfe396185924d (~aug 17 2025)
// you can add this to disable built in config load errors since dank shell provides this // you can add this to disable built in config load errors since dank shell provides this
config-notification { config-notification {
disable-failed disable-failed
} }
+10
View File
@@ -32,6 +32,16 @@ return {
end, end,
}) })
-- Nix files use spaces (2) to match alejandra formatter
vim.api.nvim_create_autocmd("FileType", {
pattern = "nix",
callback = function()
vim.bo.expandtab = true
vim.bo.shiftwidth = 2
vim.bo.tabstop = 2
end,
})
vim.api.nvim_create_user_command("Format", function(args) vim.api.nvim_create_user_command("Format", function(args)
local range = nil local range = nil
if args.count ~= -1 then if args.count ~= -1 then
+1 -1
View File
@@ -2,7 +2,7 @@
"lastChangelogVersion": "0.57.1", "lastChangelogVersion": "0.57.1",
"defaultProvider": "opencode-go", "defaultProvider": "opencode-go",
"defaultModel": "kimi-k2.5", "defaultModel": "kimi-k2.5",
"defaultThinkingLevel": "minimal", "defaultThinkingLevel": "low",
"theme": "matugen", "theme": "matugen",
"lsp": { "lsp": {
"hookMode": "edit_write" "hookMode": "edit_write"