summaryrefslogtreecommitdiff
path: root/.config/niri/cfg
diff options
context:
space:
mode:
Diffstat (limited to '.config/niri/cfg')
-rw-r--r--.config/niri/cfg/animation.kdl32
-rw-r--r--.config/niri/cfg/autostart.kdl4
-rw-r--r--.config/niri/cfg/display.kdl9
-rw-r--r--.config/niri/cfg/input.kdl32
-rw-r--r--.config/niri/cfg/keybinds.kdl137
-rw-r--r--.config/niri/cfg/layout.kdl14
-rw-r--r--.config/niri/cfg/misc.kdl25
-rw-r--r--.config/niri/cfg/rules.kdl42
8 files changed, 295 insertions, 0 deletions
diff --git a/.config/niri/cfg/animation.kdl b/.config/niri/cfg/animation.kdl
new file mode 100644
index 0000000..4c9a913
--- /dev/null
+++ b/.config/niri/cfg/animation.kdl
@@ -0,0 +1,32 @@
+ animations {
+ workspace-switch {
+ spring damping-ratio=1.0 stiffness=1000 epsilon=0.0001
+ }
+ window-open {
+ duration-ms 200
+ curve "ease-out-quad"
+ }
+ window-close {
+ duration-ms 200
+ curve "ease-out-cubic"
+ }
+ horizontal-view-movement {
+ spring damping-ratio=1.0 stiffness=900 epsilon=0.0001
+ }
+ window-movement {
+ spring damping-ratio=1.0 stiffness=800 epsilon=0.0001
+ }
+ window-resize {
+ spring damping-ratio=1.0 stiffness=1000 epsilon=0.0001
+ }
+ config-notification-open-close {
+ spring damping-ratio=0.6 stiffness=1200 epsilon=0.001
+ }
+ screenshot-ui-open {
+ duration-ms 300
+ curve "ease-out-quad"
+ }
+ overview-open-close {
+ spring damping-ratio=1.0 stiffness=900 epsilon=0.0001
+ }
+ }
diff --git a/.config/niri/cfg/autostart.kdl b/.config/niri/cfg/autostart.kdl
new file mode 100644
index 0000000..f6f0187
--- /dev/null
+++ b/.config/niri/cfg/autostart.kdl
@@ -0,0 +1,4 @@
+// ────────────── Startup Applications ──────────────
+// https://github.com/YaLTeR/niri/wiki/Configuration:-Miscellaneous#spawn-sh-at-startup
+
+ spawn-sh-at-startup "qs -c noctalia-shell"
diff --git a/.config/niri/cfg/display.kdl b/.config/niri/cfg/display.kdl
new file mode 100644
index 0000000..89f338b
--- /dev/null
+++ b/.config/niri/cfg/display.kdl
@@ -0,0 +1,9 @@
+// ────────────── Output Configuration ──────────────
+// You can run `niri msg outputs` to get the correct name for your displays.
+// You will have to remove "/-" and edit it before it takes effect.
+// https://github.com/YaLTeR/niri/wiki/Configuration:-Outputs
+
+/- output "DP-1" {
+ mode "2560x1440@359.979" // Set resolution and refresh rate
+ scale 1 // No scaling (use 2 for HiDPI)
+} \ No newline at end of file
diff --git a/.config/niri/cfg/input.kdl b/.config/niri/cfg/input.kdl
new file mode 100644
index 0000000..b897a22
--- /dev/null
+++ b/.config/niri/cfg/input.kdl
@@ -0,0 +1,32 @@
+// ────────────── Input Configuration ──────────────
+// https://github.com/YaLTeR/niri/wiki/Configuration:-Input
+
+input {
+ keyboard {
+ xkb {
+ //If you want to overwrite your keyboard layout,
+ // uncomment the line below and change the layout accordingly.
+ layout "us,us"
+ variant "colemak_dh_iso,"
+ options "grp:win_space_toggle"
+ }
+ numlock // Enable numlock on startup
+ }
+
+ touchpad {
+ // tap // Enable tap-to-click
+ dwt // disable while typing
+ click-method "clickfinger"
+ natural-scroll // Enable natural (macOS-style) scrolling
+ }
+
+ mouse {
+ // If you want to disable Mouse Acceleration,
+ // uncomment the lines below.
+ //accel-profile "flat"
+ //accel-speed 0.0
+ }
+
+ focus-follows-mouse // Automatically focus windows under the mouse pointer
+ workspace-auto-back-and-forth // Enable workspace back & forth switching
+}
diff --git a/.config/niri/cfg/keybinds.kdl b/.config/niri/cfg/keybinds.kdl
new file mode 100644
index 0000000..21563cd
--- /dev/null
+++ b/.config/niri/cfg/keybinds.kdl
@@ -0,0 +1,137 @@
+binds {
+
+ // ────────────── Keybindings ──────────────
+ // https://github.com/YaLTeR/niri/wiki/Configuration:-Key-Bindings
+
+ // ─── noctalia-shell keybinds ───
+ // https://docs.noctalia.dev/getting-started/keybinds/
+
+ Mod+Shift+ESCAPE { show-hotkey-overlay; }
+
+ // ─── Applications ───
+ Mod+Return hotkey-overlay-title="Open Terminal: Foot" { spawn "foot"; }
+ Mod+CTRL+Return hotkey-overlay-title="Open App Launcher: noctalia launcher" { spawn-sh "qs -c noctalia-shell ipc call launcher toggle"; }
+ Mod+B hotkey-overlay-title="Open Browser: Helium" { spawn "helium-browser"; }
+ Mod+ALT+L hotkey-overlay-title="Lock Screen: noctalia lock" { spawn-sh "qs -c noctalia-shell ipc call lockScreen lock"; }
+ Mod+Shift+Q hotkey-overlay-title="Session Menu: noctalia sessionMenu" { spawn-sh "qs -c noctalia-shell ipc call sessionMenu toggle"; }
+
+ // Please choose your own file manager.
+ Mod+E hotkey-overlay-title="File Manager: Nautilus" { spawn "nautilus"; }
+
+ // ─── Media Controls ───
+ XF86AudioRaiseVolume allow-when-locked=true { spawn-sh "qs -c noctalia-shell ipc call volume increase"; }
+ XF86AudioLowerVolume allow-when-locked=true { spawn-sh "qs -c noctalia-shell ipc call volume decrease"; }
+ XF86AudioMute allow-when-locked=true { spawn-sh "qs -c noctalia-shell ipc call volume muteOutput"; }
+ XF86AudioMicMute allow-when-locked=true { spawn-sh "qs -c noctalia-shell ipc call volume muteInput"; }
+ XF86AudioNext allow-when-locked=true { spawn-sh "qs -c noctalia-shell ipc call media next"; }
+ XF86AudioPrev allow-when-locked=true { spawn-sh "qs -c noctalia-shell ipc call media previous"; }
+ XF86AudioPlay allow-when-locked=true { spawn-sh "qs -c noctalia-shell ipc call media playPause"; }
+ XF86AudioPause allow-when-locked=true { spawn-sh "qs -c noctalia-shell ipc call media playPause"; }
+
+ // ─── Brightness Controls ───
+ XF86MonBrightnessUp allow-when-locked=true { spawn-sh "qs -c noctalia-shell ipc call brightness increase"; }
+ XF86MonBrightnessDown allow-when-locked=true { spawn-sh "qs -c noctalia-shell ipc call brightness decrease"; }
+
+ // ─── Window Movement and Focus ───
+ Mod+Q { close-window; }
+
+ Mod+Left { focus-column-left; }
+ Mod+H { focus-column-left; }
+ Mod+Right { focus-column-right; }
+ Mod+L { focus-column-right; }
+ Mod+Up { focus-window-up; }
+ Mod+K { focus-window-up; }
+ Mod+Down { focus-window-down; }
+ Mod+J { focus-window-down; }
+
+ Mod+CTRL+Left { move-column-left; }
+ Mod+CTRL+H { move-column-left; }
+ Mod+CTRL+Right { move-column-right; }
+ Mod+CTRL+L { move-column-right; }
+ Mod+CTRL+UP { move-window-up; }
+ Mod+CTRL+K { move-window-up; }
+ Mod+CTRL+Down { move-window-down; }
+ Mod+CTRL+J { move-window-down; }
+
+ Mod+Home { focus-column-first; }
+ Mod+End { focus-column-last; }
+ Mod+CTRL+Home { move-column-to-first; }
+ Mod+CTRL+End { move-column-to-last; }
+
+ Mod+Shift+Left { focus-monitor-left; }
+ Mod+Shift+Right { focus-monitor-right; }
+ Mod+Shift+UP { focus-monitor-up; }
+ Mod+Shift+Down { focus-monitor-down; }
+
+ Mod+Shift+CTRL+Left { move-column-to-monitor-left; }
+ Mod+Shift+CTRL+Right { move-column-to-monitor-right; }
+ Mod+Shift+CTRL+UP { move-column-to-monitor-up; }
+ Mod+Shift+CTRL+Down { move-column-to-monitor-down; }
+
+ // ─── Workspace Switching ───
+ 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; }
+
+ 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; }
+
+ 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+CTRL+1 { move-column-to-workspace 1; }
+ Mod+CTRL+2 { move-column-to-workspace 2; }
+ Mod+CTRL+3 { move-column-to-workspace 3; }
+ Mod+CTRL+4 { move-column-to-workspace 4; }
+ Mod+CTRL+5 { move-column-to-workspace 5; }
+ Mod+CTRL+6 { move-column-to-workspace 6; }
+ Mod+CTRL+7 { move-column-to-workspace 7; }
+ Mod+CTRL+8 { move-column-to-workspace 8; }
+ Mod+CTRL+9 { move-column-to-workspace 9; }
+
+ Mod+TAB { focus-workspace-previous; }
+
+ // ─── Layout Controls ───
+ Mod+CTRL+F { expand-column-to-available-width; }
+ Mod+C { center-column; }
+ Mod+CTRL+C { center-visible-columns; }
+ Mod+Minus { set-column-width "-10%"; }
+ Mod+Equal { set-column-width "+10%"; }
+ Mod+Shift+Minus { set-window-height "-10%"; }
+ Mod+Shift+Equal { set-window-height "+10%"; }
+
+ // ─── Modes ───
+ Mod+T { toggle-window-floating; }
+ Mod+F { fullscreen-window; }
+ Mod+W { toggle-column-tabbed-display; }
+
+ // ─── Screenshots ───
+ CTRL+Shift+1 { screenshot; }
+ CTRL+Shift+2 { screenshot-screen; }
+ CTRL+Shift+3 { screenshot-window; }
+
+ // ─── 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; }
+
+ // ─── Exit / Power ───
+ CTRL+ALT+Delete { quit; } // Also quits Niri
+ Mod+Shift+P { power-off-monitors; } // Turn off screens (useful for OLED or privacy)
+ Mod+O repeat=false { toggle-overview; }
+}
diff --git a/.config/niri/cfg/layout.kdl b/.config/niri/cfg/layout.kdl
new file mode 100644
index 0000000..30144c2
--- /dev/null
+++ b/.config/niri/cfg/layout.kdl
@@ -0,0 +1,14 @@
+ layout {
+ gaps 10 // Gap between windows
+ center-focused-column "never" // Don’t auto-center focused column
+
+ background-color "transparent" // <- needed for noctalia-shell to set wallpaper
+
+ preset-column-widths {
+ proportion 0.33333
+ proportion 0.5
+ proportion 0.66667
+ }
+
+ struts {}
+ }
diff --git a/.config/niri/cfg/misc.kdl b/.config/niri/cfg/misc.kdl
new file mode 100644
index 0000000..d29d093
--- /dev/null
+++ b/.config/niri/cfg/misc.kdl
@@ -0,0 +1,25 @@
+ prefer-no-csd
+ screenshot-path null
+
+ environment {
+ ELECTRON_OZONE_PLATFORM_HINT "auto"
+ QT_QPA_PLATFORM "wayland"
+ QT_QPA_PLATFORMTHEME "gtk3"
+ QT_WAYLAND_DISABLE_WINDOWDECORATION "1"
+ XDG_CURRENT_DESKTOP "niri"
+ XDG_SESSION_TYPE "wayland"
+ }
+
+ cursor {
+ xcursor-theme "BreezeX-RosePine-Linux"
+ xcursor-size 24
+ }
+
+ debug {
+ // Allows notification actions and window activation from Noctalia.
+ honor-xdg-activation-with-invalid-serial
+ }
+
+ hotkey-overlay {
+ skip-at-startup
+ }
diff --git a/.config/niri/cfg/rules.kdl b/.config/niri/cfg/rules.kdl
new file mode 100644
index 0000000..61f9280
--- /dev/null
+++ b/.config/niri/cfg/rules.kdl
@@ -0,0 +1,42 @@
+ window-rule {
+ open-maximized true
+ geometry-corner-radius 12
+ clip-to-geometry true
+ }
+
+ // if you use steam you will probably like these
+ window-rule {
+ match app-id="steam"
+ exclude title=r#"^[Ss]team$"#
+ open-floating true
+ }
+
+ window-rule {
+ match app-id="steam" title=r#"^notificationtoasts_\d+_desktop$"#
+ default-floating-position x=10 y=10 relative-to="bottom-right"
+ open-focused false
+ }
+
+ workspace "web"
+
+ window-rule {
+ match app-id="helium-browser"
+ open-on-workspace "web"
+ }
+
+ workspace "term"
+
+ window-rule {
+ match app-id="kitty"
+ open-on-workspace "term"
+ }
+
+ window-rule {
+ match app-id="foot"
+ open-on-workspace "term"
+ }
+
+ layer-rule {
+ match namespace="^noctalia-wallpaper*"
+ place-within-backdrop true
+ }