{ lib, pkgs, node, plain, leaf, flag, }: let inherit (lib.meta) 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" [ (plain "window-close" [ (leaf "duration-ms" 250) (leaf "curve" "linear") (leaf "custom-shader" <| readFile ./window-close.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" [ "volumectl" "-u" "up" ]) ]) (plain "XF86AudioLowerVolume" [ (leaf "spawn" [ "volumectl" "-u" "down" ]) ]) (plain "XF86AudioMute" [ (leaf "spawn" [ "volumectl" "toggle-mute" ]) ]) (plain "XF86AudioMicMute" [ (leaf "spawn" [ "volumectl" "-m" "toggle-mute" ]) ]) (plain "XF86AudioPlay" [ (leaf "spawn" [ "playerctl" "play-pause" ]) ]) (plain "XF86AudioNext" [ (leaf "spawn" [ "playerctl" "next" ]) ]) (plain "XF86AudioPrev" [ (leaf "spawn" [ "playerctl" "previous" ]) ]) (plain "XF86MonBrightnessUp" [ (leaf "spawn" [ "lightctl" "up" ]) ]) (plain "XF86MonBrightnessDown" [ (leaf "spawn" [ "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" ] )