diff --git a/.config/niri/config.kdl b/.config/niri/config.kdl index c6a0c3a..34e7053 100644 --- a/.config/niri/config.kdl +++ b/.config/niri/config.kdl @@ -45,35 +45,36 @@ binds { // ---- Hotkey Overlay MOD+SHIFT+BACKSPACE { show-hotkey-overlay; } - // ─── Noctalia ─── -// MOD+SPACE hotkey-overlay-title="Open App Launcher" { spawn-sh "qs -c noctalia-shell ipc call launcher toggle"; } - MOD+SHIFT+L hotkey-overlay-title="Lock Screen" { spawn-sh "qs -c noctalia-shell ipc call lockScreen lock"; } - MOD+S hotkey-overlay-title="Open Control Center" { spawn-sh "qs -c noctalia-shell ipc call controlCenter toggle";} - MOD+COMMA hotkey-overlay-title="Open Settings" { spawn-sh "qs -c noctalia-shell ipc call settings toggle"; } - MOD+SHIFT+DELETE hotkey-overlay-title="Session Menu" { spawn-sh "qs -c noctalia-shell ipc call sessionMenu toggle"; } - MOD+N hotkey-overlay-title="Notification History" { spawn-sh "qs -c noctalia-shell ipc call notifications toggleHistory"; } - MOD+M hotkey-overlay-title="Wallpaper Selector" { spawn-sh "qs -c noctalia-shell ipc call wallpaper toggle"; } + // ─── Noctalia Shell ─── + // Note: On NixOS, use "noctalia-shell" directly instead of "qs -c noctalia-shell" + Mod+Shift+L hotkey-overlay-title="Lock Screen" { spawn "noctalia-shell" "ipc" "call" "lockScreen" "lock"; } + Mod+S hotkey-overlay-title="Control Center" { spawn "noctalia-shell" "ipc" "call" "controlCenter" "toggle"; } + Mod+Comma hotkey-overlay-title="Settings" { spawn "noctalia-shell" "ipc" "call" "settings" "toggle"; } + Mod+Escape hotkey-overlay-title="Session Menu" { spawn "noctalia-shell" "ipc" "call" "sessionMenu" "toggle"; } + Mod+N hotkey-overlay-title="Notification History" { spawn "noctalia-shell" "ipc" "call" "notifications" "toggleHistory"; } + Mod+M hotkey-overlay-title="Wallpaper Selector" { spawn "noctalia-shell" "ipc" "call" "wallpaper" "toggle"; } // ─── Applications ─── - MOD+T hotkey-overlay-title="Open Terminal: ghostty" { spawn-sh "ghostty"; } - MOD+B hotkey-overlay-title="Open Browser: Zen" { spawn-sh "zen-browser"; } - MOD+E hotkey-overlay-title="File Manager: Thunar" { spawn-sh "thunar"; } - MOD+SPACE repeat=false hotkey-overlay-title="Open App Launcher" { spawn "vicinae" "toggle"; } - MOD+G hotkey-overlay-title="Open Google Gemini" { spawn-sh "/usr/bin/chromium --profile-directory=Default --app-id=gdfaincndogidkdcdkhapmbffkckdkhn - "; } + Mod+T hotkey-overlay-title="Open Terminal: ghostty" { spawn "ghostty"; } + Mod+B hotkey-overlay-title="Open Browser: Zen" { spawn "zen-browser"; } + Mod+E hotkey-overlay-title="File Manager: Nautilus" { spawn "nautilus"; } + Mod+Space repeat=false hotkey-overlay-title="Open App Launcher" { spawn "vicinae" "toggle"; } + // Mod+G hotkey-overlay-title="Open Google Gemini" { spawn "chromium" "--app=https://gemini.google.com"; } - // ─── Audio Controls ─── - // Example volume keys mappings for PipeWire & WirePlumber. - // The allow-when-locked=true property makes them work even when the session is locked. - XF86AudioRaiseVolume allow-when-locked=true { spawn-sh "wpctl set-volume @DEFAULT_AUDIO_SINK@ 0.1+"; } - XF86AudioLowerVolume allow-when-locked=true { spawn-sh "wpctl set-volume @DEFAULT_AUDIO_SINK@ 0.1-"; } - XF86AudioMute allow-when-locked=true { spawn-sh "wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle"; } + // ─── Audio Controls (via Noctalia for OSD) ─── + XF86AudioRaiseVolume allow-when-locked=true { spawn "noctalia-shell" "ipc" "call" "volume" "increase"; } + XF86AudioLowerVolume allow-when-locked=true { spawn "noctalia-shell" "ipc" "call" "volume" "decrease"; } + XF86AudioMute allow-when-locked=true { spawn "noctalia-shell" "ipc" "call" "volume" "muteOutput"; } XF86AudioMicMute allow-when-locked=true { spawn-sh "wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle"; } XF86AudioNext allow-when-locked=true { spawn-sh "playerctl next"; } XF86AudioPause allow-when-locked=true { spawn-sh "playerctl play-pause"; } XF86AudioPlay allow-when-locked=true { spawn-sh "playerctl play-pause"; } XF86AudioPrev allow-when-locked=true { spawn-sh "playerctl previous"; } + // ─── Brightness Controls (via Noctalia for OSD) ─── + XF86MonBrightnessUp { spawn "noctalia-shell" "ipc" "call" "brightness" "increase"; } + XF86MonBrightnessDown { spawn "noctalia-shell" "ipc" "call" "brightness" "decrease"; } + // ─── Window Movement and Focus ─── MOD+Q { close-window; } @@ -172,7 +173,7 @@ binds { // ─── Emergency Escape Key ─── // Use this when a fullscreen app blocks your keybinds. // It disables any active keyboard shortcut inhibitor, restoring control. - MOD+ESCAPE allow-inhibiting=false { toggle-keyboard-shortcuts-inhibit; } + Mod+Shift+Escape allow-inhibiting=false { toggle-keyboard-shortcuts-inhibit; } // ─── Exit / Power ─── CTRL+ALT+DELETE { quit; } // Also quits Niri @@ -183,13 +184,17 @@ binds { // ────────────── Startup Applications ────────────── // https://github.com/YaLTeR/niri/wiki/Configuration:-Miscellaneous#spawn-sh-at-startup - spawn-sh-at-startup "/usr/lib/polkit-kde-authentication-agent-1 &" // Polkit + // Note: On NixOS, polkit agent is started via systemd user service (see desktop.nix) + // spawn-sh-at-startup "polkit-gnome-authentication-agent-1 &" spawn-sh-at-startup "sleep 2 && vicinae server" spawn-at-startup "xwayland-satellite" -// spawn-at-startup "wl-paste" "--type text" "--watch" "cliphist" "store" -// spawn-at-startup "wl-paste" "--type image" "--watch" "cliphist" "store" + + // Clipboard history (cliphist) + spawn-at-startup "wl-paste" "--type" "text" "--watch" "cliphist" "store" + spawn-at-startup "wl-paste" "--type" "image" "--watch" "cliphist" "store" + spawn-sh-at-startup "steam -nochatui -nofriendsui -silent" - spawn-sh-at-startup "rclone mount google-drive: /home/pinj/google-drive/" + // spawn-sh-at-startup "rclone mount google-drive: /home/pinj/google-drive/" prefer-no-csd // Disable program decorations screenshot-path null // Disable screenshot saving @@ -277,8 +282,8 @@ binds { } window-rule { - match app-id=r#"thunar$"# - // Always float Thunar windows + match app-id=r#"org.gnome.Nautilus$"# + // Always float Nautilus windows open-floating true // Set Window Proportions max-height 1500