be1fa77c6e
The niri 'environment' block only affects processes niri spawns directly. Apps launched via dbus activation or systemd-user (most .desktop launches go through one of these) get systemd-user's env, which still has bare 'niri' — set by niri-session BEFORE niri itself runs. Adding a one-shot spawn-at-startup that re-imports XDG_CURRENT_DESKTOP from niri's env into both systemd-user and dbus-activation, after niri starts. Future dbus-activated apps will see niri:GNOME. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
160 lines
4.3 KiB
KDL
160 lines
4.3 KiB
KDL
layout {
|
|
gaps 0
|
|
|
|
border {
|
|
off
|
|
}
|
|
|
|
focus-ring {
|
|
off
|
|
}
|
|
}
|
|
|
|
input {
|
|
keyboard {
|
|
xkb {
|
|
layout "us"
|
|
}
|
|
}
|
|
|
|
touchpad {
|
|
tap
|
|
natural-scroll
|
|
accel-speed 0.2
|
|
accel-profile "adaptive"
|
|
scroll-method "two-finger"
|
|
disabled-on-external-mouse
|
|
}
|
|
|
|
mouse {
|
|
accel-profile "flat"
|
|
}
|
|
}
|
|
|
|
environment {
|
|
XDG_CURRENT_DESKTOP "niri:GNOME"
|
|
}
|
|
|
|
spawn-at-startup "sh" "-c" "systemctl --user import-environment XDG_CURRENT_DESKTOP && dbus-update-activation-environment XDG_CURRENT_DESKTOP"
|
|
spawn-at-startup "waybar"
|
|
spawn-at-startup "mako"
|
|
spawn-at-startup "awww-daemon"
|
|
spawn-at-startup "/usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1"
|
|
spawn-at-startup "swayidle" "-w" "timeout" "300" "niri msg action power-off-monitors" "timeout" "600" "gtklock" "-d" "timeout" "1800" "systemctl suspend-then-hibernate" "before-sleep" "gtklock" "-d"
|
|
spawn-at-startup "wl-paste" "--watch" "cliphist" "store"
|
|
spawn-at-startup "wlsunset" "-l" "49.2" "-L" "-123.1"
|
|
spawn-at-startup "xwayland-satellite"
|
|
spawn-at-startup "snixembed" "--no-startup-id"
|
|
|
|
binds {
|
|
Mod+Q repeat=false { close-window; }
|
|
Mod+F { fullscreen-window; }
|
|
Mod+Z { maximize-column; }
|
|
Mod+V { toggle-window-floating; }
|
|
|
|
Mod+Return { spawn "alacritty"; }
|
|
Mod+D { spawn "wofi" "--show" "drun"; }
|
|
Mod+E { spawn "thunar"; }
|
|
Mod+Shift+B { spawn "waybar-restart"; }
|
|
|
|
Mod+H { focus-column-left; }
|
|
Mod+L { focus-column-right; }
|
|
Mod+J { focus-window-down; }
|
|
Mod+K { focus-window-up; }
|
|
|
|
Mod+Shift+H { move-column-left; }
|
|
Mod+Shift+L { move-column-right; }
|
|
Mod+Shift+J { move-window-down; }
|
|
Mod+Shift+K { move-window-up; }
|
|
|
|
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-window-to-workspace 1; }
|
|
Mod+Shift+2 { move-window-to-workspace 2; }
|
|
Mod+Shift+3 { move-window-to-workspace 3; }
|
|
Mod+Shift+4 { move-window-to-workspace 4; }
|
|
Mod+Shift+5 { move-window-to-workspace 5; }
|
|
Mod+Shift+6 { move-window-to-workspace 6; }
|
|
Mod+Shift+7 { move-window-to-workspace 7; }
|
|
Mod+Shift+8 { move-window-to-workspace 8; }
|
|
Mod+Shift+9 { move-window-to-workspace 9; }
|
|
|
|
Mod+Print { spawn "screenshot"; }
|
|
|
|
Mod+M { move-window-to-workspace "minimized"; }
|
|
Mod+Shift+M { focus-workspace "minimized"; }
|
|
|
|
Mod+Shift+E { spawn "gtklock" "-d"; }
|
|
Mod+Shift+P { spawn "powermenu"; }
|
|
Mod+Shift+C { spawn "clipboard-picker"; }
|
|
Mod+Shift+X { quit; }
|
|
|
|
XF86AudioRaiseVolume allow-when-locked=true { spawn "volume" "up"; }
|
|
XF86AudioLowerVolume allow-when-locked=true { spawn "volume" "down"; }
|
|
XF86AudioMute allow-when-locked=true { spawn "volume" "mute"; }
|
|
|
|
XF86MonBrightnessUp allow-when-locked=true { spawn "brightnessctl" "set" "+10%"; }
|
|
XF86MonBrightnessDown allow-when-locked=true { spawn "brightnessctl" "set" "10%-"; }
|
|
}
|
|
|
|
// ── Window Rules ─────────────────────────────────────────────────────────────
|
|
|
|
// Fullscreen games: no border, open fullscreen, enable VRR
|
|
window-rule {
|
|
match app-id="steam_app_"
|
|
open-fullscreen true
|
|
border {
|
|
off
|
|
}
|
|
focus-ring {
|
|
off
|
|
}
|
|
variable-refresh-rate true
|
|
}
|
|
|
|
// Generic fullscreen request (any app asking to go fullscreen)
|
|
window-rule {
|
|
match is-focused=true
|
|
variable-refresh-rate true
|
|
}
|
|
|
|
// Wine System Tray: hide the host window, icons bridge to SNI via snixembed
|
|
window-rule {
|
|
match app-id="^explorer.exe$"
|
|
match title="^Wine System Tray$"
|
|
open-floating true
|
|
default-floating-position x=-9999 y=-9999
|
|
}
|
|
|
|
// Bolt Launcher
|
|
window-rule {
|
|
match app-id="^bolt-launcher$"
|
|
open-floating true
|
|
}
|
|
|
|
// RuneLite
|
|
window-rule {
|
|
match app-id="^(net-runelite-client-RuneLite|runelite|RuneLite)$"
|
|
open-floating true
|
|
border {
|
|
off
|
|
}
|
|
focus-ring {
|
|
off
|
|
}
|
|
}
|
|
|
|
// Thunar file-operation progress dialog
|
|
window-rule {
|
|
match app-id="^thunar$" title="^File Operation Progress$"
|
|
open-floating true
|
|
}
|