{ config, pkgs, lib, inputs, osConfig, ... }: let modifier = if (osConfig.keybinds.modifier == "Meta") then "Mod" else null; nsipc = "noctalia-shell ipc call"; kb-layout = builtins.substring 0 2 osConfig.system.locale; in { config = if osConfig.desktop.window-managers.niri.enable then { home.file = { "~/.config/niri/config.kdl" = { target = ".config/niri/config.kdl"; text = '' input { keyboard { xkb { layout "${kb-layout}" } repeat-delay 600 repeat-rate 20 track-layout "global" } touchpad { tap dwt accel-profile "flat" accel-speed 0.0 scroll-method "two-finger" } mouse { accel-speed 0.5 accel-profile "flat" } focus-follows-mouse max-scroll-amount="0%" } output "Samsung Electric Company S24D330 0x5A5A5131" { mode "1920x1080@60" position x=0 y=1440 } output "PNP(AOC) Q27G2WG4 0x00005F45" { mode "2560x1440@143.912" position x=0 y=0 variable-refresh-rate on-demand=true focus-at-startup } binds { //Applications ${modifier}+${osConfig.keybinds.hotkeys.terminal} hotkey-overlay-title="Open Terminal" { spawn "${osConfig.apps.terminal.default}";} ${modifier}+${osConfig.keybinds.hotkeys.browser} hotkey-overlay-title="Open Browser" { spawn "${osConfig.apps.internet.browsers.default}";} ${modifier}+${osConfig.keybinds.hotkeys.launcher} hotkey-overlay-title="Open Launcher" { spawn-sh "${nsipc} launcher toggle || walker";} ${modifier}+Shift+${osConfig.keybinds.hotkeys.editor} hotkey-overlay-title="Open Editor" { spawn-sh "$EDITOR";} ${modifier}+B hotkey-overlay-title="Open Password Manager" { spawn-sh "rbw unlocked || kitty --class kitty-floating -e rbw unlock; selected=$(rbw list | walker -d); wl-copy $(rbw get \"$selected\"); sleep 30; rbw lock";} //Window Management ${modifier}+Shift+${osConfig.keybinds.hotkeys.close-window} { close-window; } ${modifier}+R { switch-preset-column-width; } ${modifier}+Shift+R { switch-preset-column-width-back; } ${modifier}+F { expand-column-to-available-width; } ${modifier}+G { toggle-window-floating; } ${modifier}+Shift+F { fullscreen-window; } //Column Navigation ${modifier}+H { focus-column-left; } ${modifier}+L { focus-column-right; } ${modifier}+WheelScrollDown { focus-column-right; } ${modifier}+WheelScrollUp { focus-column-left; } ${modifier}+Left { focus-column-left; } ${modifier}+Right { focus-column-right; } ${modifier}+Shift+H { move-column-left; } ${modifier}+Shift+L { move-column-right; } ${modifier}+Shift+J { move-column-to-monitor-next; } ${modifier}+Shift+K { move-column-to-monitor-previous; } ${modifier}+Shift+Left { move-column-left; } ${modifier}+Shift+Right { move-column-right; } //Workspace Navigation ${modifier}+J cooldown-ms=150 { focus-monitor-next; } ${modifier}+K cooldown-ms=150 { focus-monitor-previous; } ${modifier}+Down cooldown-ms=150 { focus-workspace-down; } ${modifier}+Up cooldown-ms=150 { focus-workspace-up; } //Screenshots Print { screenshot;} //Misc ${modifier}+Shift+Y hotkey-overlay-title="Open Keyboard Cheatsheet" { spawn-sh "${nsipc} plugin:keybind-cheatsheet toggle"; } ${modifier}+P hotkey-overlay-title="Open Session Menu" { spawn-sh "${nsipc} sessionMenu toggle"; } } switch-events { lid-close { spawn "noctalia-shell" "ipc" "call" "sessionMenu" "lockAndSuspend"; } } layout { gaps 20 center-focused-column "always" always-center-single-column default-column-width { proportion 0.5; } preset-column-widths { proportion 0.5 proportion 0.66667 proportion 1.0 } border { width 5 } shadow { on } } spawn-at-startup "elephant" spawn-at-startup "noctalia-shell" spawn-at-startup "walker --gapplication-service" gestures { hot-corners { off } } cursor { hide-when-typing hide-after-inactive-ms 2000 } xwayland-satellite { path "xwayland-satellite" } hotkey-overlay { hide-not-bound } window-rule { geometry-corner-radius 20 clip-to-geometry true } prefer-no-csd include "noctalia.kdl" ''; }; }; } else { }; }