{spkgs, ...}: { wayland.windowManager.river = let layout = "rivertile"; in { enable = true; xwayland.enable = true; package = spkgs.river-classic; # FIX: using spkgs version as zls is broken rn ;-; settings = let main = "Super"; # applications terminal = "kitty"; browser = "firefox"; in { default-layout = "${layout}"; output-layout = "${layout}"; border-width = 1; spawn = [ ''${layout}'' "awww-daemon" "waybar" ]; map.normal = { "${main} C" = "close"; # close focused window "${main}+Alt Delete" = "exit"; # exit river # app launcher "${main} D" = ''spawn "pkill -x rofi || rofi -show drun -show-icons"''; "Alt Tab" = ''spawn "pkill -x rofi || rofi -modi window -show window -show-icons"''; # spawn applications "${main} T" = ''spawn "${terminal}"''; "${main} R" = ''spawn "${browser}"''; # move focused view to top of layout stack "${main} N" = ''zoom''; # focus next/previous view "${main} J" = "focus-view previous"; "${main} K" = "focus-view next"; # move to next/previous output "${main} H" = "focus-output previous"; "${main} L" = "focus-output next"; # swap next/previous view "${main}+Alt J" = "swap previous"; "${main}+Alt K" = "swap next"; # send view to next/previous output # and switch to that output (wip) "${main}+Alt H" = "send-to-output previous"; #"${main}+Alt H" = "focus-output previous"; "${main}+Alt L" = "send-to-output next"; #"${main}+Alt L" = "focus-output next"; # move views #"${main}+Alt H" = "move left 100"; #"${main}+Alt J" = "move down 100"; #"${main}+Alt K" = "move up 100"; #"${main}+Alt L" = "move right 100"; # snap views #"${main}+Control H" = "snap left"; #"${main}+Control J" = "snap down"; #"${main}+Control K" = "snap up"; #"${main}+Control L" = "snap right"; # resize views #"${main}+Shift H" = "resize horizontal -100"; #"${main}+Shift J" = "resize vertical -100"; #"${main}+Shift K" = "resize vertical 100"; #"${main}+Shift L" = "resize horizontal 100"; }; }; }; }