325 lines
10 KiB
Nix
325 lines
10 KiB
Nix
![]() |
{
|
||
|
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"
|
||
|
]
|
||
|
)
|