diff --git a/lyrathorpe/catppuccin-mocha.nix b/lyrathorpe/catppuccin-mocha.nix new file mode 100644 index 0000000..d621b95 --- /dev/null +++ b/lyrathorpe/catppuccin-mocha.nix @@ -0,0 +1,26 @@ +# Catppuccin Mocha palette. Raw 6-digit hex (no leading "#"); consumers add a +# "#" where their format needs it. Shared by the Sway desktop theming +# (home/sway.nix) and the ReGreet greeter (swaywm.nix) so the two stay in sync. +{ + base = "1e1e2e"; + mantle = "181825"; + crust = "11111b"; + surface0 = "313244"; + surface1 = "45475a"; + surface2 = "585b70"; + overlay0 = "6c7086"; + subtext0 = "a6adc8"; + subtext1 = "bac2de"; + text = "cdd6f4"; + rosewater = "f5e0dc"; + red = "f38ba8"; + maroon = "eba0ac"; + peach = "fab387"; + yellow = "f9e2af"; + green = "a6e3a1"; + teal = "94e2d5"; + sapphire = "74c7ec"; + blue = "89b4fa"; + mauve = "cba6f7"; + pink = "f5c2e7"; +} diff --git a/lyrathorpe/home/sway.nix b/lyrathorpe/home/sway.nix index 2a86e58..9ba4acd 100644 --- a/lyrathorpe/home/sway.nix +++ b/lyrathorpe/home/sway.nix @@ -15,31 +15,10 @@ ... }: let - # Catppuccin Mocha. Raw 6-digit hex (no leading "#"); prefix "#" where a - # consumer needs it -- Sway/i3status/dunst want "#", foot/swaylock do not. - ctp = { - base = "1e1e2e"; - mantle = "181825"; - crust = "11111b"; - surface0 = "313244"; - surface1 = "45475a"; - surface2 = "585b70"; - overlay0 = "6c7086"; - subtext0 = "a6adc8"; - subtext1 = "bac2de"; - text = "cdd6f4"; - rosewater = "f5e0dc"; - red = "f38ba8"; - maroon = "eba0ac"; - peach = "fab387"; - yellow = "f9e2af"; - green = "a6e3a1"; - teal = "94e2d5"; - sapphire = "74c7ec"; - blue = "89b4fa"; - mauve = "cba6f7"; - pink = "f5c2e7"; - }; + # Catppuccin Mocha (shared with the ReGreet greeter). Raw hex; prefix "#" + # where a consumer needs it -- Sway/i3status/dunst want "#", foot/swaylock do + # not. + ctp = import ../catppuccin-mocha.nix; in { wayland.windowManager.sway = { diff --git a/lyrathorpe/swaywm.nix b/lyrathorpe/swaywm.nix index b90192c..84e9bf4 100644 --- a/lyrathorpe/swaywm.nix +++ b/lyrathorpe/swaywm.nix @@ -7,6 +7,8 @@ let cfg = config.features.swayDesktop; + # Catppuccin Mocha (shared with the Sway desktop, see lyrathorpe/home/sway.nix). + ctp = import ./catppuccin-mocha.nix; in { options = { @@ -51,6 +53,66 @@ in # services.displayManager.sessionPackages. Hosts that turn off # features.swayDesktop (e.g. EDaaS) keep plain TTY login. programs.regreet.enable = true; + # Theme the greeter to match the Sway desktop (Catppuccin Mocha). ReGreet is + # GTK; recolour via CSS (covering both libadwaita named colours and plain + # GTK node selectors) and use the same Noto Sans as the bar/notifications. + programs.regreet.font = { + name = "Noto Sans"; + package = pkgs.noto-fonts; + size = 16; + }; + programs.regreet.extraCss = '' + @define-color window_bg_color #${ctp.base}; + @define-color window_fg_color #${ctp.text}; + @define-color view_bg_color #${ctp.mantle}; + @define-color view_fg_color #${ctp.text}; + @define-color card_bg_color #${ctp.surface0}; + @define-color card_fg_color #${ctp.text}; + @define-color accent_bg_color #${ctp.blue}; + @define-color accent_fg_color #${ctp.base}; + @define-color accent_color #${ctp.blue}; + @define-color destructive_bg_color #${ctp.red}; + @define-color destructive_fg_color #${ctp.base}; + @define-color error_color #${ctp.red}; + @define-color warning_color #${ctp.peach}; + @define-color success_color #${ctp.green}; + + window { + background-color: #${ctp.base}; + color: #${ctp.text}; + } + + label { + color: #${ctp.text}; + } + + entry { + background-color: #${ctp.surface0}; + color: #${ctp.text}; + border: 1px solid #${ctp.surface1}; + } + + entry:focus-within { + border-color: #${ctp.blue}; + } + + button, + combobox button { + background-color: #${ctp.surface0}; + color: #${ctp.text}; + border: 1px solid #${ctp.surface1}; + } + + button:hover { + background-color: #${ctp.surface1}; + } + + button:active, + button:checked { + background-color: #${ctp.blue}; + color: #${ctp.base}; + } + ''; # cage reads the XKB_* environment at startup, so force the greeter onto the # same Dvorak layout as the Sway session (home/sway.nix) -- otherwise the # password field would be QWERTY. Dvorak is the "us" layout's variant, NOT a