{ config, lib, options, ... }: { options.desktop.windowManager = lib.mkOption { type = with lib.types; nullOr (enum [ "swayfx" ]); }; config.wayland.windowManager.sway = if (config.desktop.windowManager == "swayfx") then { enable = lib.mkForce true; package = null; # use the nixos module config = { bars = [ ]; bindswitches = { "lid:off" = { action = "output eDP-1 power on"; locked = true; }; "lid:on" = { action = "output eDP-1 power off"; locked = true; }; }; colors = # rose pine theme let gold = "#f6c177"; hl3 = "#524f67"; love = "#eb6f92"; muted = "#6e6a86"; nothing = "#00000000"; overlay = "#26233a"; rose = "#ebbcba"; subtle = "#908caa"; text = "#e0def4"; in { focused = { background = "${rose}"; border = "${rose}"; childBorder = "${rose}"; indicator = "${gold}"; text = "${hl3}"; }; focusedInactive = { background = "${muted}"; border = "${nothing}"; childBorder = "${nothing}"; indicator = "${nothing}"; text = "${text}"; }; unfocused = { background = "${overlay}"; border = "${nothing}"; childBorder = "${nothing}"; indicator = "${nothing}"; text = "${subtle}"; }; urgent = { background = "${love}"; border = "${love}"; childBorder = "${love}"; indicator = "${love}"; text = "${text}"; }; }; floating.titlebar = false; focus.followMouse = false; fonts = { names = [ "Fira Code" ]; size = 8.0; }; gaps = { inner = 4; outer = 8; }; input = { "*" = { accel_profile = "flat"; }; "type:touchpad" = { drag = "enabled"; dwt = "enabled"; natural_scroll = "enabled"; tap = "enabled"; }; }; keybindings = let mod = config.wayland.windowManager.sway.config.modifier; in { "${mod}+Return" = "exec foot"; "${mod}+Q" = "kill"; "${mod}+Alt+Q" = "exit"; "${mod}+V" = "splitt"; "${mod}+H" = "focus left"; "${mod}+J" = "focus down"; "${mod}+K" = "focus up"; "${mod}+L" = "focus right"; "${mod}+Shift+H" = "move left"; "${mod}+Shift+J" = "move down"; "${mod}+Shift+K" = "move up"; "${mod}+Shift+L" = "move right"; "${mod}+Minus" = "resize shrink width 5"; "${mod}+Shift+Equal" = "resize grow height 5"; "${mod}+Shift+Minus" = "resize shrink height 5"; "${mod}+Equal" = "resize grow width 5"; "${mod}+1" = "workspace 1"; "${mod}+2" = "workspace 2"; "${mod}+3" = "workspace 3"; "${mod}+4" = "workspace 4"; "${mod}+5" = "workspace 5"; "${mod}+6" = "workspace 6"; "${mod}+7" = "workspace 7"; "${mod}+8" = "workspace 8"; "${mod}+9" = "workspace 9"; "${mod}+Shift+1" = "move workspace 1"; "${mod}+Shift+2" = "move workspace 2"; "${mod}+Shift+3" = "move workspace 3"; "${mod}+Shift+4" = "move workspace 4"; "${mod}+Shift+5" = "move workspace 5"; "${mod}+Shift+6" = "move workspace 6"; "${mod}+Shift+7" = "move workspace 7"; "${mod}+Shift+8" = "move workspace 8"; "${mod}+Shift+9" = "move workspace 9"; "${mod}+F" = "floating toggle"; "${mod}+G" = "layout toggle split tabbed"; }; modes = { }; modifier = "Mod4"; output = { "eDP-1" = { background = "~/Pictures/blossoms.jpg fill"; mode = "2256x1504@60Hz"; position = "0 0"; scale = "1.5"; }; }; window.titlebar = false; }; # inactive windows cast no shadow to avoid rendering shadows on top of # the active window extraConfig = '' blur enable blur_xray enable corner_radius 10 shadows enable shadow_inactive_color #00000000 ''; } else { }; }