aboutsummaryrefslogtreecommitdiff
path: root/home/rices/schrottkatze/niri/kdl
diff options
context:
space:
mode:
authorNatasha Moongrave <natasha@256phi.eu>2026-04-10 12:13:47 +0200
committerNatasha Moongrave <natasha@256phi.eu>2026-04-10 12:13:47 +0200
commit66888f3eea130323987ca9aa890085057b8ebd34 (patch)
tree172d4298104e184bd3bf2328cbf31002972610c6 /home/rices/schrottkatze/niri/kdl
parent5d8400b07056fe72995a6abaa4d42ed52b55c81b (diff)
Add schrottkatze rice: Niri compositor config
KDL configs for keybindings, styling (trans flag gradient borders), workspaces (social/browser), input, privacy, app quirks, overview. Includes arc.frag window-open shader, cpdate.sh script, wallpaper.
Diffstat (limited to 'home/rices/schrottkatze/niri/kdl')
-rw-r--r--home/rices/schrottkatze/niri/kdl/binds.kdl77
-rw-r--r--home/rices/schrottkatze/niri/kdl/input.kdl17
-rw-r--r--home/rices/schrottkatze/niri/kdl/overviews.kdl19
-rw-r--r--home/rices/schrottkatze/niri/kdl/privacy.kdl12
-rw-r--r--home/rices/schrottkatze/niri/kdl/quirks.kdl42
-rw-r--r--home/rices/schrottkatze/niri/kdl/screenshot.kdl6
-rw-r--r--home/rices/schrottkatze/niri/kdl/style.kdl84
-rw-r--r--home/rices/schrottkatze/niri/kdl/workspaces.kdl58
8 files changed, 315 insertions, 0 deletions
diff --git a/home/rices/schrottkatze/niri/kdl/binds.kdl b/home/rices/schrottkatze/niri/kdl/binds.kdl
new file mode 100644
index 0000000..611e231
--- /dev/null
+++ b/home/rices/schrottkatze/niri/kdl/binds.kdl
@@ -0,0 +1,77 @@
+binds {
+ // spawn terminal
+ Mod+Return repeat=false { spawn "kitty"; }
+ Mod+D repeat=false { spawn "fuzzel"; }
+ Mod+I repeat=false { spawn "bemoji" "-n"; }
+ Mod+M repeat=false { spawn "hyprpicker"; }
+ Mod+E repeat=false { spawn "kitty" "hx" "~/.config/niri/live.kdl"; }
+
+ Mod+Shift+E { quit; }
+ Mod+Shift+Q { close-window; }
+ Mod+Ctrl+Shift+P { power-off-monitors; }
+
+ Mod+Shift+Ctrl+Slash allow-inhibiting=false { toggle-keyboard-shortcuts-inhibit; }
+
+ Mod+Shift+Slash { show-hotkey-overlay; }
+
+ Mod+Shift+C { set-dynamic-cast-window; }
+ Mod+Ctrl+C { set-dynamic-cast-monitor; }
+ Mod+Shift+Ctrl+C { clear-dynamic-cast-target; }
+
+ // window/columns controls
+ Mod+H { focus-column-left; }
+ Mod+J { focus-window-down; }
+ Mod+K { focus-window-up; }
+ Mod+L { focus-column-right; }
+ Mod+Ctrl+H { move-column-left; }
+ Mod+Ctrl+J { move-window-down; }
+ Mod+Ctrl+K { move-window-up; }
+ Mod+Ctrl+L { move-column-right; }
+ Mod+R { switch-preset-column-width; }
+
+ Mod+G { toggle-overview; }
+
+ Mod+V { toggle-window-floating; }
+ Mod+Shift+V { switch-focus-between-floating-and-tiling; }
+
+ // monitor controls
+ Mod+Shift+H { focus-monitor-left; }
+ Mod+Shift+J { focus-monitor-down; }
+ Mod+Shift+K { focus-monitor-up; }
+ Mod+Shift+L { focus-monitor-right; }
+ Mod+Shift+Ctrl+H { move-column-to-monitor-left; }
+ Mod+Shift+Ctrl+J { move-column-to-monitor-down; }
+ Mod+Shift+Ctrl+K { move-column-to-monitor-up; }
+ Mod+Shift+Ctrl+L { move-column-to-monitor-right; }
+
+ // column editing stuffs
+ Mod+BracketLeft { consume-or-expel-window-left; }
+ Mod+BracketRight { consume-or-expel-window-right; }
+ Mod+C { center-column; }
+ Mod+Minus { set-column-width "-5%"; }
+ Mod+Equal { set-column-width "+5%"; }
+ Mod+Shift+Minus { set-window-height "-10%"; }
+ Mod+Shift+Equal { set-window-height "+10%"; }
+ Mod+Shift+W { toggle-column-tabbed-display; }
+
+ Mod+F { maximize-column; }
+ Alt+F { expand-column-to-available-width; }
+ Mod+Shift+F { maximize-window-to-edges; }
+ Mod+Ctrl+F { fullscreen-window; }
+
+ Mod+Shift+Ctrl+F { toggle-windowed-fullscreen; }
+
+ // media keys
+ XF86AudioLowerVolume \
+ allow-when-locked=true \
+ { spawn "wpctl" "set-volume" "@DEFAULT_AUDIO_SINK@" "0.1-"; }
+ XF86AudioMicMute \
+ allow-when-locked=true \
+ { spawn "wpctl" "set-mute" "@DEFAULT_AUDIO_SOURCE@" "toggle"; }
+ XF86AudioMute \
+ allow-when-locked=true \
+ { spawn "wpctl" "set-mute" "@DEFAULT_AUDIO_SINK@" "toggle"; }
+ XF86AudioRaiseVolume \
+ allow-when-locked=true \
+ { spawn "wpctl" "set-volume" "@DEFAULT_AUDIO_SINK@" "0.1+"; }
+}
diff --git a/home/rices/schrottkatze/niri/kdl/input.kdl b/home/rices/schrottkatze/niri/kdl/input.kdl
new file mode 100644
index 0000000..a8be309
--- /dev/null
+++ b/home/rices/schrottkatze/niri/kdl/input.kdl
@@ -0,0 +1,17 @@
+input {
+ keyboard {
+ xkb {
+ layout "us"
+ variant "altgr-intl"
+ }
+ repeat-delay 600
+ repeat-rate 25
+ track-layout "global"
+ }
+ touchpad {
+ dwt
+ dwtp
+ natural-scroll
+ }
+ mouse { accel-profile "flat"; }
+}
diff --git a/home/rices/schrottkatze/niri/kdl/overviews.kdl b/home/rices/schrottkatze/niri/kdl/overviews.kdl
new file mode 100644
index 0000000..5cb4443
--- /dev/null
+++ b/home/rices/schrottkatze/niri/kdl/overviews.kdl
@@ -0,0 +1,19 @@
+overview {
+ backdrop-color "110000"
+ zoom 0.381966
+ workspace-shadow {
+ offset x=0 y=10
+ softness 60
+ color "#7f00008f"
+ }
+}
+
+recent-windows {
+ debounce-ms 1500
+ open-delay-ms 300
+ highlight {
+ active-color "f69ecf"
+ padding 5
+ corner-radius 2.5
+ }
+}
diff --git a/home/rices/schrottkatze/niri/kdl/privacy.kdl b/home/rices/schrottkatze/niri/kdl/privacy.kdl
new file mode 100644
index 0000000..1190aeb
--- /dev/null
+++ b/home/rices/schrottkatze/niri/kdl/privacy.kdl
@@ -0,0 +1,12 @@
+layer-rule {
+ match namespace="notifications"
+ block-out-from "screen-capture"
+}
+
+window-rule {
+ match app-id="^signal|Element|org.gnome.Evolution$"
+ match title="^.*(Discord|Beispiel Screenshare block Bug|Bitwarden|Träwelling).*$"
+ exclude title="^.*((Schrottkatze|Statistics|Leaderboard) - Träwelling|chaos.social|Nekoverse|catgirl.cloud).*$"
+ exclude is-floating=true
+ block-out-from "screen-capture"
+}
diff --git a/home/rices/schrottkatze/niri/kdl/quirks.kdl b/home/rices/schrottkatze/niri/kdl/quirks.kdl
new file mode 100644
index 0000000..07fa886
--- /dev/null
+++ b/home/rices/schrottkatze/niri/kdl/quirks.kdl
@@ -0,0 +1,42 @@
+// handle steam grabbing focus 1000 times on startup
+window-rule {
+ match app-id="steam" title="Steam"
+ open-focused false
+}
+
+// position steam notifs correctly: https://github.com/YaLTeR/niri/wiki/Application-Issues
+window-rule {
+ match app-id="steam" title="^notificationtoasts_[\\d]+_desktop$"
+ open-focused false
+ border { off; }
+ shadow { off; }
+ baba-is-float false
+ default-floating-position relative-to="bottom-right" x=0 y=0
+}
+
+// fix guild wars
+window-rule {
+ match app-id="steam_app_1284210" title="Guild Wars 2"
+ match app-id="(steam_app_[0-9]+|[Mm]inecraft.*|gamescope)"
+ border { off; }
+ shadow { off; }
+}
+
+window-rule {
+ match app-id="chromium-browser"
+ geometry-corner-radius 6 6 1 1
+}
+
+window-rule {
+ match app-id="vesktop" is-floating=true
+ geometry-corner-radius 6
+}
+
+environment {
+ ELECTRON_OZONE_PLATFORM_HINT "auto"
+}
+
+window-rule {
+ match app-id="zenity"
+ geometry-corner-radius 16
+}
diff --git a/home/rices/schrottkatze/niri/kdl/screenshot.kdl b/home/rices/schrottkatze/niri/kdl/screenshot.kdl
new file mode 100644
index 0000000..f99e15c
--- /dev/null
+++ b/home/rices/schrottkatze/niri/kdl/screenshot.kdl
@@ -0,0 +1,6 @@
+screenshot-path "~/Pictures/screenshots/%Y-%m-%dT%H:%M:%S.png"
+binds {
+ Mod+Ctrl+S { screenshot-screen; }
+ Mod+Shift+S { screenshot-window; }
+ Mod+S { screenshot; }
+}
diff --git a/home/rices/schrottkatze/niri/kdl/style.kdl b/home/rices/schrottkatze/niri/kdl/style.kdl
new file mode 100644
index 0000000..fccf795
--- /dev/null
+++ b/home/rices/schrottkatze/niri/kdl/style.kdl
@@ -0,0 +1,84 @@
+prefer-no-csd
+
+cursor {
+ xcursor-theme "phinger-cursors-dark"
+ xcursor-size 32
+ hide-when-typing
+ hide-after-inactive-ms 10000
+}
+
+layout {
+ gaps 15
+ struts {
+ left 0
+ right 0
+ top 0
+ bottom 0
+ }
+ focus-ring { off; }
+ border {
+ on
+ width 3
+ active-gradient angle=135 from="#f69ecf" in="oklch shorter hue" relative-to="window" to="#5bcefa"
+ inactive-gradient angle=135 from="#f69ecf" in="oklch shorter hue" relative-to="window" to="#ff9a56"
+ }
+ tab-indicator {
+ hide-when-single-tab
+ gap 2
+ width 5
+ length total-proportion=0.500000
+ position "left"
+ gaps-between-tabs 0
+ corner-radius 3
+ active-color "#5bcefa"
+ inactive-color "#3c3836"
+ }
+ default-column-width
+ center-focused-column "never"
+}
+
+window-rule {
+ match is-floating=true
+ exclude app-id="steam_app_[0-9]+"
+ shadow {
+ on
+ offset x=0 y=0
+ softness 40
+ color "#bab9e5af"
+ inactive-color "#fa9d99af"
+ }
+}
+
+window-rule {
+ geometry-corner-radius 1
+ clip-to-geometry true
+}
+
+window-rule {
+ match is-window-cast-target=true
+ border {
+ on
+ active-gradient angle=135 \
+ from="#64de50" \
+ in="oklch shorter hue" \
+ relative-to="window" \
+ to="#5bcefa"
+ inactive-gradient angle=135 \
+ from="#64de50" \
+ in="oklch shorter hue" \
+ relative-to="window" \
+ to="#ff9a56"
+ }
+}
+
+layer-rule {
+ match namespace="launcher"
+ geometry-corner-radius 10
+ shadow {
+ on
+ offset x=0 y=0
+ softness 40
+ color "#bab9e5af"
+ }
+ baba-is-float true
+}
diff --git a/home/rices/schrottkatze/niri/kdl/workspaces.kdl b/home/rices/schrottkatze/niri/kdl/workspaces.kdl
new file mode 100644
index 0000000..ab89dec
--- /dev/null
+++ b/home/rices/schrottkatze/niri/kdl/workspaces.kdl
@@ -0,0 +1,58 @@
+// WS Social
+workspace "social"
+
+spawn-at-startup "signal-desktop"
+spawn-at-startup ".evolution-wrapped_"
+spawn-at-startup "vesktop"
+spawn-at-startup "deltachat"
+
+window-rule {
+ match app-id="^(signal|Element|org.gnome.Evolution|discord|steam|DeltaChat)$"
+ open-on-workspace "social"
+}
+
+// WS Browser
+workspace "browser"
+
+spawn-at-startup "firefox"
+spawn-at-startup "obsidian"
+
+window-rule {
+ match app-id="^firefox|Chromium-browser|obsidian$"
+ open-on-workspace "browser"
+}
+
+binds {
+ Mod+P { focus-workspace-up; }
+ Mod+N { focus-workspace-down; }
+ Mod+Ctrl+P { move-workspace-up; }
+ Mod+Ctrl+N { move-workspace-down; }
+ Mod+Shift+P { move-column-to-workspace-up; }
+ Mod+Shift+N { move-column-to-workspace-down; }
+
+ Mod+Q { focus-workspace "social"; }
+ Mod+W { focus-workspace "browser"; }
+ Mod+E { focus-workspace 3; }
+ Mod+Ctrl+Q { move-column-to-workspace "social"; }
+ Mod+Ctrl+W { move-column-to-workspace "browser"; }
+ Mod+Ctrl+E { move-column-to-workspace 3; }
+
+ Mod+1 { focus-workspace 4; }
+ Mod+2 { focus-workspace 5; }
+ Mod+3 { focus-workspace 6; }
+ Mod+4 { focus-workspace 7; }
+ Mod+5 { focus-workspace 8; }
+ Mod+6 { focus-workspace 9; }
+ Mod+7 { focus-workspace 10; }
+ Mod+8 { focus-workspace 11; }
+ Mod+9 { focus-workspace 12; }
+ Mod+Ctrl+1 { move-column-to-workspace 4; }
+ Mod+Ctrl+2 { move-column-to-workspace 5; }
+ Mod+Ctrl+3 { move-column-to-workspace 6; }
+ Mod+Ctrl+4 { move-column-to-workspace 7; }
+ Mod+Ctrl+5 { move-column-to-workspace 8; }
+ Mod+Ctrl+6 { move-column-to-workspace 9; }
+ Mod+Ctrl+7 { move-column-to-workspace 10; }
+ Mod+Ctrl+8 { move-column-to-workspace 11; }
+ Mod+Ctrl+9 { move-column-to-workspace 12; }
+}