nichts/modules/wms/niri/config.nix
faukah b37855a6b2 niri: add custom animations for window opening and resizing
Signed-off-by: faukah <fau@faukah.com>
Change-Id: I6a6a69647336104b507fbba5b82de23684e60291
2025-07-29 22:40:37 +02:00

335 lines
11 KiB
Nix

{
lib,
pkgs,
node,
plain,
leaf,
flag,
}:
let
inherit (lib.meta) getExe getExe';
inherit (builtins) readFile;
in
[
(plain "input" [
(plain "keyboard" [
(plain "xkb" [
(leaf "layout" "us,ru")
(leaf "variant" ",phonetic_winkeys")
(leaf "options" "grp:rctrl_rshift_toggle, compose:102")
])
(leaf "repeat-rate" 60)
(leaf "repeat-delay" 200)
(flag "numlock")
])
(plain "touchpad" [ (flag "tap") ])
(leaf "focus-follows-mouse" { max-scroll-amount = "0%"; })
(plain "tablet" [
(leaf "map-to-output" "DP-2")
])
])
# Laptop monitor
(node "output" "eDP-1" [
(leaf "mode" "1920x1080@59.999")
(leaf "scale" 1)
(leaf "position" {
x = 0;
y = 0;
})
])
# PC monitors
(node "output" "DP-2" [
(leaf "mode" "1920x1080@59.999")
(leaf "scale" 1)
(leaf "position" {
x = 0;
y = 0;
})
])
(node "output" "HDMI-A-1" [
(leaf "mode" "1920x1080@59.999")
(leaf "scale" 1)
(leaf "position" {
x = 1920;
y = 0;
})
])
(plain "layout" [
(leaf "gaps" 0)
(leaf "center-focused-column" "on-overflow")
(plain "focus-ring" [
(leaf "width" 2)
(leaf "active-color" "#f9e2af")
(leaf "inactive-color" "transparent")
(leaf "active-gradient" {
from = "#E5989B";
to = "#FFB4A2";
angle = 45;
relative-to = "workspace-view";
"in" = "oklch longer hue";
})
])
(plain "border" [
(flag "off")
])
(plain "shadow" [
# (flag "on")
])
(plain "tab-indicator" [
(leaf "width" 2)
(leaf "gap" 4)
(leaf "gaps-between-tabs" 2)
])
(plain "insert-hint" [
(leaf "color" "#ffc87f80")
(leaf "gradient" {
from = "#f38ba880";
to = "#f9e2af80";
angle = 45;
relative-to = "workspace-view";
"in" = "oklch longer hue";
})
])
(plain "preset-column-widths" (
map (width: (leaf "proportion" width)) [
0.3333
0.5
0.66666
]
))
(plain "default-column-width" [
(leaf "proportion" 0.5)
])
(leaf "background-color" "transparent")
])
(leaf "spawn-at-startup" "waybar")
(plain "environment" [
(leaf "DISPLAY" ":0")
])
(plain "layer-rule" [
(leaf "match" { namespace = "overview$"; })
(leaf "place-within-backdrop" true)
])
(flag "prefer-no-csd")
(plain "switch-events" [
(plain "lid-close" [
(leaf "spawn" <| getExe pkgs.swaylock)
])
])
(plain "overview" [
(leaf "zoom" 0.6)
(leaf "backdrop-color" "#777777")
])
(plain "animations" [
(flag "off")
(plain "window-close" [
(leaf "duration-ms" 250)
(leaf "curve" "linear")
(leaf "custom-shader" <| readFile ./window-close.glsl)
])
(plain "window-open" [
(leaf "duration-ms" 350)
(leaf "curve" "ease-out-quad")
(leaf "custom-shader" <| readFile ./window-open.glsl)
])
# (plain "window-resize" [
# (leaf "duration-ms" 200)
# (leaf "curve" "ease-out-quad")
# (leaf "custom-shader" <| readFile ./window-resize.glsl)
# ])
])
(plain "window-rule" [
(leaf "draw-border-with-background" false)
])
(plain "debug" [
(flag "wait-for-frame-completion-in-pipewire")
])
(plain "hotkey-overlay" [
(flag "skip-at-startup")
])
(plain "cursor" [
(leaf "xcursor-theme" "BreezeX-RosePine-Linux")
(leaf "xcursor-size" 32)
(flag "hide-when-typing")
])
(plain "binds" [
(plain "XF86AudioRaiseVolume" [
(leaf "spawn" [
(getExe' pkgs.avizo "volumectl")
"-u"
"up"
])
])
(plain "XF86AudioLowerVolume" [
(leaf "spawn" [
(getExe' pkgs.avizo "volumectl")
"-u"
"down"
])
])
(plain "XF86AudioMute" [
(leaf "spawn" [
(getExe' pkgs.avizo "volumectl")
"toggle-mute"
])
])
(plain "XF86AudioMicMute" [
(leaf "spawn" [
(getExe' pkgs.avizo "volumectl")
"-m"
"toggle-mute"
])
])
(plain "XF86AudioPlay" [
(leaf "spawn" [
(getExe' pkgs.avizo "playerctl")
"play-pause"
])
])
(plain "XF86AudioNext" [
(leaf "spawn" [
(getExe' pkgs.avizo "playerctl")
"next"
])
])
(plain "XF86AudioPrev" [
(leaf "spawn" [
(getExe' pkgs.avizo "playerctl")
"previous"
])
])
(plain "XF86MonBrightnessUp" [
(leaf "spawn" [
(getExe' pkgs.avizo "lightctl")
"up"
])
])
(plain "XF86MonBrightnessDown" [
(leaf "spawn" [
(getExe' pkgs.avizo "lightctl")
"down"
])
])
(plain "Mod+Shift+Slash" [ (flag "show-hotkey-overlay") ])
(plain "Mod+Return" [ (leaf "spawn" <| getExe pkgs.ghostty) ])
(plain "Mod+Shift+Return" [
(leaf "spawn" [
(getExe pkgs.bash)
"-c"
"${getExe pkgs.niri} msg action spawn -- ${getExe pkgs.ghostty}; sleep 0.2; ${getExe pkgs.niri} msg action consume-or-expel-window-left"
])
])
(plain "Ctrl+Print" [ (flag "screenshot-screen") ])
(plain "Mod+0" [ (leaf "focus-workspace" 0) ])
(plain "Mod+1" [ (leaf "focus-workspace" 1) ])
(plain "Mod+2" [ (leaf "focus-workspace" 2) ])
(plain "Mod+3" [ (leaf "focus-workspace" 3) ])
(plain "Mod+4" [ (leaf "focus-workspace" 4) ])
(plain "Mod+5" [ (leaf "focus-workspace" 5) ])
(plain "Mod+6" [ (leaf "focus-workspace" 6) ])
(plain "Mod+7" [ (leaf "focus-workspace" 7) ])
(plain "Mod+8" [ (leaf "focus-workspace" 8) ])
(plain "Mod+9" [ (leaf "focus-workspace" 9) ])
(plain "Mod+Alt+L" [ (leaf "spawn" <| getExe pkgs.swaylock) ])
(plain "Mod+B" [ (leaf "spawn" <| getExe pkgs.brave) ])
(plain "Mod+BracketLeft" [ (flag "consume-or-expel-window-left") ])
(plain "Mod+BracketRight" [ (flag "consume-or-expel-window-right") ])
(plain "Mod+C" [ (flag "center-column") ])
(plain "Mod+Comma" [ (flag "consume-window-into-column") ])
(plain "Mod+Ctrl+End" [ (flag "move-column-to-last") ])
(plain "Mod+Ctrl+F" [ (flag "expand-column-to-available-width") ])
(plain "Mod+Ctrl+H" [ (flag "focus-monitor-left") ])
(plain "Mod+Ctrl+Home" [ (flag "move-column-to-first") ])
(plain "Mod+Ctrl+J" [ (flag "focus-monitor-down") ])
(plain "Mod+Ctrl+K" [ (flag "focus-monitor-up") ])
(plain "Mod+Ctrl+L" [ (flag "focus-monitor-right") ])
(plain "Mod+Ctrl+R" [ (flag "reset-window-height") ])
(plain "Mod+D" [ (leaf "spawn" <| getExe pkgs.fuzzel) ])
(plain "Mod+End" [ (flag "focus-column-last") ])
(plain "Mod+Equal" [ (leaf "set-column-width" [ "+10%" ]) ])
(plain "Mod+F" [ (flag "maximize-column") ])
(plain "Mod+H" [ (flag "focus-column-or-monitor-left") ])
(plain "Mod+Home" [ (flag "focus-column-first") ])
(plain "Mod+I" [ (flag "focus-workspace-up") ])
(plain "Mod+J" [ (flag "focus-window-or-workspace-down") ])
(plain "Mod+K" [ (flag "focus-window-or-workspace-up") ])
(plain "Mod+L" [ (flag "focus-column-or-monitor-right") ])
(plain "Mod+Minus" [ (leaf "set-column-width" [ "-10%" ]) ])
(plain "Mod+O" [ (flag "toggle-overview") ])
(plain "Mod+Page_Down" [ (flag "focus-workspace-down") ])
(plain "Mod+Page_Up" [ (flag "focus-workspace-up") ])
(plain "Mod+Period" [ (flag "expel-window-from-column") ])
(plain "Mod+Q" [ (flag "close-window") ])
(plain "Mod+R" [ (flag "switch-preset-column-width") ])
(plain "Mod+Shift+0" [ (leaf "move-column-to-workspace" 0) ])
(plain "Mod+Shift+1" [ (leaf "move-column-to-workspace" 1) ])
(plain "Mod+Shift+2" [ (leaf "move-column-to-workspace" 2) ])
(plain "Mod+Shift+3" [ (leaf "move-column-to-workspace" 3) ])
(plain "Mod+Shift+4" [ (leaf "move-column-to-workspace" 4) ])
(plain "Mod+Shift+5" [ (leaf "move-column-to-workspace" 5) ])
(plain "Mod+Shift+6" [ (leaf "move-column-to-workspace" 6) ])
(plain "Mod+Shift+7" [ (leaf "move-column-to-workspace" 7) ])
(plain "Mod+Shift+8" [ (leaf "move-column-to-workspace" 8) ])
(plain "Mod+Shift+9" [ (leaf "move-column-to-workspace" 9) ])
(plain "Mod+Shift+Ctrl+Down" [ (flag "move-column-to-monitor-down") ])
(plain "Mod+Shift+Ctrl+H" [ (flag "move-column-to-monitor-left") ])
(plain "Mod+Shift+Ctrl+J" [ (flag "move-column-to-monitor-down") ])
(plain "Mod+Shift+Ctrl+K" [ (flag "move-column-to-monitor-up") ])
(plain "Mod+Shift+Ctrl+Left" [ (flag "move-column-to-monitor-left") ])
(plain "Mod+Shift+Ctrl+L" [ (flag "move-column-to-monitor-right") ])
(plain "Mod+Shift+Ctrl+Right" [ (flag "move-column-to-monitor-right") ])
(plain "Mod+Shift+Ctrl+Up" [ (flag "move-column-to-monitor-up") ])
(plain "Mod+Shift+E" [ (flag "quit") ])
(plain "Mod+Shift+Equal" [ (leaf "set-window-height" [ "+10%" ]) ])
(plain "Mod+Shift+F" [ (flag "fullscreen-window") ])
(plain "Mod+Shift+H" [ (flag "move-column-left-or-to-monitor-left") ])
(plain "Mod+Shift+I" [ (flag "move-column-to-workspace-up") ])
(plain "Mod+Shift+J" [ (flag "move-window-down-or-to-workspace-down") ])
(plain "Mod+Shift+K" [ (flag "move-window-up-or-to-workspace-up") ])
(plain "Mod+Shift+L" [ (flag "move-column-right-or-to-monitor-right") ])
(plain "Mod+Shift+Minus" [ (leaf "set-window-height" [ "-10%" ]) ])
(plain "Mod+Shift+Page_Down" [ (flag "move-column-to-workspace-down") ])
(plain "Mod+Shift+Page_Up" [ (flag "move-column-to-workspace-up") ])
(plain "Mod+Shift+P" [ (flag "power-off-monitors") ])
(plain "Mod+Shift+R" [ (flag "switch-preset-window-height") ])
(plain "Mod+Shift+U" [ (flag "move-column-to-workspace-down") ])
(plain "Mod+Shift+V" [ (flag "switch-focus-between-floating-and-tiling") ])
(plain "Mod+Shift+WheelScrollDown" [ (flag "move-column-to-workspace-down") ])
(plain "Mod+Shift+WheelScrollLeft" [ (flag "move-column-left") ])
(plain "Mod+Shift+WheelScrollRight" [ (flag "move-column-right") ])
(plain "Mod+Shift+WheelScrollUp" [ (flag "move-column-to-workspace-up") ])
(plain "Mod+T" [ (flag "screenshot") ])
(plain "Mod+U" [ (flag "focus-workspace-down") ])
(plain "Mod+V" [ (flag "toggle-window-floating") ])
(plain "Mod+W" [ (flag "toggle-column-tabbed-display") ])
(plain "Mod+WheelScrollDown" [ (flag "focus-workspace-down") ])
(plain "Mod+WheelScrollLeft" [ (flag "focus-column-left") ])
(plain "Mod+WheelScrollRight" [ (flag "focus-column-right") ])
(plain "Mod+WheelScrollUp" [ (flag "focus-workspace-up") ])
(plain "Print" [ (flag "screenshot") ])
])
]
++ (map
(
app-id:
(plain "window-rule" [
(leaf "match" { inherit app-id; })
(leaf "open-floating" true)
])
)
[
"unset"
"org.gnome.Nautilus"
"org.freedesktop.impl.portal.desktop.kde"
]
)