style(greetd): restyle ReGreet login as Cosmonaut Shell
Rework regreet.css into holographic-glass login cards — magenta scanlines, violet top-glow, thin glowing magenta borders, glowing monospace text — to match hyprdrive's Cosmonaut Shell, with fixed cq_magenta/cq_cyan colours kept outside apply-theme's palette map. Switch the greeter font to Agave Nerd Font Mono and the greeting to "-< CREW AUTHENTICATION >-" (regreet.toml). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>main
parent
057a5a44d8
commit
ab6e330bed
|
|
@ -1,4 +1,4 @@
|
|||
/* regreet.css — CyberQueer login theme for ReGreet (greetd, Wayland-native)
|
||||
/* regreet.css — Cosmonaut Shell login theme for ReGreet (greetd, Wayland-native)
|
||||
*
|
||||
* Deployed to /etc/greetd/regreet.css by
|
||||
* setup/modules/optional-Modules/apps/greetd-regreet.sh and loaded by ReGreet
|
||||
|
|
@ -7,11 +7,14 @@
|
|||
* outright; the base theme (regreet.toml `theme_name`) only supplies sane widget
|
||||
* defaults. We deliberately do NOT reuse the desktop `cyberqueer` GTK theme here:
|
||||
* its `* { all: unset }` reset is meant for waybar/eww/Thunar and would strip a
|
||||
* login card's layout. This is the greeter's own, self-contained cyberqueer skin.
|
||||
* login card's layout. This is the greeter's own, self-contained skin — styled to
|
||||
* match hyprdrive's "Cosmonaut Shell": translucent holographic glass cards with
|
||||
* scanlines, thin glowing magenta/violet borders, and glowing monospace text.
|
||||
*
|
||||
* Colours mirror colors.conf (the CyberQueer palette). apply-theme.sh rewrites
|
||||
* the hex values below in lock-step with the rest of the system — keep them as
|
||||
* bare 6-digit hex so its case-insensitive sed substitution keeps matching.
|
||||
* The four PALETTE hexes below (bg/text/pink/violet) are the ones apply-theme.sh
|
||||
* rewrites in lock-step with colors.conf — keep them as bare 6-digit hex so its
|
||||
* case-insensitive sed keeps matching. cq_magenta / cq_cyan are NOT in that map,
|
||||
* so they stay fixed: the Cosmonaut magenta the shell is built around.
|
||||
*
|
||||
* ReGreet widget map (relm4 `#[name]` sets Rust fields, NOT CSS ids — so only
|
||||
* css classes + node types are selectable):
|
||||
|
|
@ -26,17 +29,18 @@
|
|||
* infobar → PAM notification bar
|
||||
*/
|
||||
|
||||
@define-color cq_bg #1A1A1A; /* near-black base surface */
|
||||
@define-color cq_text #D6ABAB; /* warm quasi-white foreground */
|
||||
@define-color cq_pink #E40046; /* hot-pink primary accent */
|
||||
@define-color cq_violet #5018DD; /* electric-violet secondary */
|
||||
@define-color cq_red #F50505; /* hi-vis danger red */
|
||||
@define-color cq_bg #1A1A1A; /* near-black base surface (apply-theme) */
|
||||
@define-color cq_text #D6ABAB; /* warm quasi-white foreground (apply-theme)*/
|
||||
@define-color cq_pink #E40046; /* hot accent red (apply-theme) */
|
||||
@define-color cq_violet #5018DD; /* electric violet (apply-theme) */
|
||||
@define-color cq_red #F50505; /* hi-vis danger red (fixed) */
|
||||
@define-color cq_magenta #EB00A6; /* Cosmonaut Shell primary magenta (fixed) */
|
||||
@define-color cq_cyan #22D3EE; /* cool readout accent (fixed) */
|
||||
|
||||
/* Re-tint the base (Adwaita) theme's semantic named colours to CyberQueer.
|
||||
* Adwaita paints .suggested-action / .destructive-action / selections from
|
||||
* these named colours, so overriding them here is what actually recolours the
|
||||
* Login and Reboot/Power-Off buttons (a plain `.suggested-action` rule loses to
|
||||
* Adwaita's own). Kept in bare hex so apply-theme.sh rewrites them too. */
|
||||
/* Re-tint the base (Adwaita) theme's semantic named colours. Adwaita paints
|
||||
* .suggested-action / selections from these, so overriding them here is what
|
||||
* actually recolours those widgets. Kept in bare hex so apply-theme.sh rewrites
|
||||
* the palette ones too. */
|
||||
@define-color accent_color #E40046;
|
||||
@define-color accent_bg_color #E40046;
|
||||
@define-color accent_fg_color #1A1A1A;
|
||||
|
|
@ -48,52 +52,63 @@
|
|||
|
||||
/* ── Backdrop ─────────────────────────────────────────────────────────────
|
||||
* Solid near-black behind the wallpaper Picture, so the greeter never flashes
|
||||
* white and stays legible if no wallpaper has been synced yet. */
|
||||
* white and stays legible if no wallpaper has been synced yet. Monospace
|
||||
* everywhere, matching the shell. */
|
||||
window,
|
||||
overlay {
|
||||
background-color: @cq_bg;
|
||||
color: @cq_text;
|
||||
color: @cq_magenta;
|
||||
font-family: "Agave Nerd Font Mono", "JetBrains Mono", monospace;
|
||||
}
|
||||
|
||||
/* ── Cards: the login frame and the clock frame both carry `.background` ──── */
|
||||
/* ── Cards: the login frame and the clock frame both carry `.background` ────
|
||||
* Translucent holographic glass: a faint magenta scanline field + a soft violet
|
||||
* top-glow layered over a dark translucent fill, ringed by a thin glowing
|
||||
* magenta border — projected light, not an opaque slab. */
|
||||
frame.background {
|
||||
background-color: alpha(@cq_bg, 0.86);
|
||||
background-color: alpha(@cq_bg, 0.62);
|
||||
background-image:
|
||||
repeating-linear-gradient(0deg,
|
||||
alpha(@cq_magenta, 0.05) 0px, alpha(@cq_magenta, 0.05) 1px,
|
||||
transparent 1px, transparent 4px),
|
||||
radial-gradient(circle at 50% -10%, alpha(@cq_violet, 0.30), transparent 72%);
|
||||
color: @cq_text;
|
||||
border: 2px solid @cq_pink;
|
||||
border-radius: 20px;
|
||||
padding: 10px 16px;
|
||||
box-shadow: 0 0 26px 2px alpha(@cq_pink, 0.40),
|
||||
border: 1.5px solid alpha(@cq_magenta, 0.85);
|
||||
border-radius: 18px;
|
||||
padding: 12px 18px;
|
||||
box-shadow: 0 0 34px 2px alpha(@cq_magenta, 0.34),
|
||||
0 0 12px 1px alpha(@cq_violet, 0.30),
|
||||
inset 0 0 60px alpha(@cq_violet, 0.14);
|
||||
}
|
||||
|
||||
/* The clock card sits flush on the top edge (ReGreet flattens its top corners
|
||||
* via inline_css at priority 800, which wins over this — so we only need to
|
||||
* style the glow + fill, not fight the border geometry). */
|
||||
* via inline_css at priority 800, which wins over this). Big glowing HUD readout. */
|
||||
frame.background > label {
|
||||
font-family: "JetBrains Mono", monospace;
|
||||
font-family: "Agave Nerd Font Mono", "JetBrains Mono", monospace;
|
||||
font-size: 30pt;
|
||||
font-weight: 700;
|
||||
letter-spacing: 4px;
|
||||
padding: 4px 26px;
|
||||
color: @cq_text;
|
||||
text-shadow: 0 0 12px alpha(@cq_pink, 0.75),
|
||||
0 0 22px alpha(@cq_violet, 0.55);
|
||||
letter-spacing: 5px;
|
||||
padding: 4px 28px;
|
||||
color: @cq_magenta;
|
||||
text-shadow: 0 0 14px alpha(@cq_magenta, 0.80),
|
||||
0 0 26px alpha(@cq_violet, 0.55);
|
||||
}
|
||||
|
||||
/* ── Text & labels inside the login card ─────────────────────────────────── */
|
||||
frame.background > grid > label {
|
||||
color: @cq_text;
|
||||
color: @cq_magenta;
|
||||
text-shadow: 0 0 10px alpha(@cq_magenta, 0.45);
|
||||
margin: 0 6px;
|
||||
}
|
||||
|
||||
/* ── Entries: username / session / password ──────────────────────────────── */
|
||||
entry,
|
||||
entry.password {
|
||||
background-color: alpha(#000000, 0.45);
|
||||
background-color: alpha(#000000, 0.42);
|
||||
color: @cq_text;
|
||||
caret-color: @cq_pink;
|
||||
border: 2px solid alpha(@cq_violet, 0.85);
|
||||
border-radius: 12px;
|
||||
caret-color: @cq_magenta;
|
||||
border: 1.5px solid alpha(@cq_violet, 0.85);
|
||||
border-radius: 11px;
|
||||
padding: 8px 12px;
|
||||
min-height: 34px;
|
||||
transition: border-color 160ms ease, box-shadow 160ms ease;
|
||||
|
|
@ -101,49 +116,51 @@ entry.password {
|
|||
|
||||
entry image,
|
||||
entry.password image { /* the peek-password / clear icons */
|
||||
color: @cq_violet;
|
||||
color: @cq_magenta;
|
||||
}
|
||||
|
||||
entry:focus-within,
|
||||
entry.password:focus-within {
|
||||
border-color: @cq_pink;
|
||||
box-shadow: 0 0 14px 1px alpha(@cq_pink, 0.55);
|
||||
border-color: @cq_magenta;
|
||||
box-shadow: 0 0 16px 1px alpha(@cq_magenta, 0.55),
|
||||
inset 0 0 10px alpha(@cq_magenta, 0.12);
|
||||
}
|
||||
|
||||
entry selection {
|
||||
background-color: @cq_pink;
|
||||
background-color: @cq_magenta;
|
||||
color: @cq_bg;
|
||||
}
|
||||
|
||||
/* ── Combo boxes: user + session pickers render as `combobox > button` ───── */
|
||||
combobox > button.combo {
|
||||
background-color: alpha(#000000, 0.45);
|
||||
background-color: alpha(#000000, 0.42);
|
||||
color: @cq_text;
|
||||
border: 2px solid alpha(@cq_violet, 0.85);
|
||||
border-radius: 12px;
|
||||
border: 1.5px solid alpha(@cq_violet, 0.85);
|
||||
border-radius: 11px;
|
||||
padding: 6px 12px;
|
||||
min-height: 34px;
|
||||
}
|
||||
|
||||
combobox > button.combo:hover {
|
||||
border-color: @cq_pink;
|
||||
border-color: @cq_magenta;
|
||||
box-shadow: 0 0 12px alpha(@cq_magenta, 0.40);
|
||||
}
|
||||
|
||||
combobox arrow {
|
||||
color: @cq_pink;
|
||||
color: @cq_magenta;
|
||||
min-height: 16px;
|
||||
min-width: 16px;
|
||||
}
|
||||
|
||||
/* The drop-down popover list */
|
||||
combobox popover contents {
|
||||
background-color: @cq_bg;
|
||||
border: 1px solid @cq_violet;
|
||||
border-radius: 12px;
|
||||
background-color: alpha(@cq_bg, 0.96);
|
||||
border: 1.5px solid @cq_violet;
|
||||
border-radius: 11px;
|
||||
box-shadow: 0 0 18px alpha(@cq_violet, 0.40);
|
||||
}
|
||||
|
||||
combobox popover contents :selected {
|
||||
background-color: @cq_pink;
|
||||
background-color: @cq_magenta;
|
||||
color: @cq_bg;
|
||||
}
|
||||
|
||||
|
|
@ -151,17 +168,18 @@ combobox popover contents :selected {
|
|||
button {
|
||||
color: @cq_text;
|
||||
background-color: alpha(@cq_violet, 0.16);
|
||||
border: 2px solid alpha(@cq_violet, 0.85);
|
||||
border-radius: 12px;
|
||||
border: 1.5px solid alpha(@cq_violet, 0.85);
|
||||
border-radius: 11px;
|
||||
padding: 8px 18px;
|
||||
min-height: 34px;
|
||||
transition: all 160ms ease;
|
||||
}
|
||||
|
||||
button:hover {
|
||||
background-color: alpha(@cq_violet, 0.32);
|
||||
border-color: @cq_pink;
|
||||
background-color: alpha(@cq_violet, 0.30);
|
||||
border-color: @cq_magenta;
|
||||
color: #FFFFFF;
|
||||
box-shadow: 0 0 14px alpha(@cq_magenta, 0.40);
|
||||
}
|
||||
|
||||
button:active {
|
||||
|
|
@ -177,27 +195,29 @@ button.toggle {
|
|||
}
|
||||
|
||||
button.toggle:checked {
|
||||
background-color: alpha(@cq_pink, 0.20);
|
||||
border-color: @cq_pink;
|
||||
color: @cq_pink;
|
||||
background-color: alpha(@cq_magenta, 0.20);
|
||||
border-color: @cq_magenta;
|
||||
color: @cq_magenta;
|
||||
}
|
||||
|
||||
/* Primary action: Login. The `window` prefix (specificity 0,1,2) and
|
||||
* `background-image: none` are needed to beat Adwaita's own accent styling. */
|
||||
* `background-image: none` beat Adwaita's own accent styling. Solid Cosmonaut
|
||||
* magenta with a strong glow — the one always-magenta control (cq_magenta is
|
||||
* outside apply-theme's palette map, so Login stays magenta across themes). */
|
||||
window button.suggested-action {
|
||||
background-image: none;
|
||||
background-color: @cq_pink;
|
||||
background-color: @cq_magenta;
|
||||
color: @cq_bg;
|
||||
border: 2px solid @cq_pink;
|
||||
border: 1.5px solid @cq_magenta;
|
||||
font-weight: 700;
|
||||
box-shadow: 0 0 16px alpha(@cq_pink, 0.45);
|
||||
box-shadow: 0 0 18px alpha(@cq_magenta, 0.55);
|
||||
}
|
||||
|
||||
window button.suggested-action:hover {
|
||||
background-color: #FF1A5E;
|
||||
border-color: #FF1A5E;
|
||||
background-color: #FF2ABF;
|
||||
border-color: #FF2ABF;
|
||||
color: @cq_bg;
|
||||
box-shadow: 0 0 22px alpha(@cq_pink, 0.75);
|
||||
box-shadow: 0 0 26px alpha(@cq_magenta, 0.85);
|
||||
}
|
||||
|
||||
window button.suggested-action:active {
|
||||
|
|
@ -205,13 +225,12 @@ window button.suggested-action:active {
|
|||
border-color: @cq_violet;
|
||||
}
|
||||
|
||||
/* Destructive actions: Reboot / Power Off — quiet red outline, red glow on
|
||||
* hover (overrides Adwaita's solid-red fill; same specificity trick). */
|
||||
/* Destructive actions: Reboot / Power Off — quiet red outline, red glow on hover */
|
||||
window button.destructive-action {
|
||||
background-image: none;
|
||||
background-color: transparent;
|
||||
color: @cq_text;
|
||||
border: 2px solid alpha(@cq_red, 0.65);
|
||||
border: 1.5px solid alpha(@cq_red, 0.60);
|
||||
}
|
||||
|
||||
window button.destructive-action:hover {
|
||||
|
|
@ -222,8 +241,6 @@ window button.destructive-action:hover {
|
|||
}
|
||||
|
||||
/* ── PAM notification bar ────────────────────────────────────────────────── */
|
||||
/* Style only the inner message box so a collapsed/unrevealed infobar draws
|
||||
* nothing (no stray border line above the power buttons). */
|
||||
infobar {
|
||||
background: transparent;
|
||||
border: none;
|
||||
|
|
@ -233,8 +250,8 @@ infobar {
|
|||
infobar > revealer > box {
|
||||
background-color: alpha(@cq_bg, 0.90);
|
||||
color: @cq_text;
|
||||
border: 2px solid @cq_violet;
|
||||
border-radius: 12px;
|
||||
border: 1.5px solid @cq_violet;
|
||||
border-radius: 11px;
|
||||
box-shadow: 0 0 18px alpha(@cq_violet, 0.40);
|
||||
}
|
||||
|
||||
|
|
@ -252,6 +269,6 @@ infobar label {
|
|||
tooltip {
|
||||
background-color: @cq_violet;
|
||||
color: @cq_bg;
|
||||
border-radius: 10px;
|
||||
border-radius: 9px;
|
||||
padding: 4px 8px;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -29,7 +29,7 @@ cursor_theme_name = "Adwaita"
|
|||
cursor_blink = true
|
||||
# Bumped well above the 11pt the old greeter used, so the greeter reads large on
|
||||
# the 4K panel. Tune here (or via GDK_SCALE in regreet-session.sh) to taste.
|
||||
font_name = "JetBrains Mono 16"
|
||||
font_name = "Agave Nerd Font Mono 15"
|
||||
icon_theme_name = "Adwaita"
|
||||
# Clean base for regreet.css to paint on (see header). The CyberQueer colours
|
||||
# live in /etc/greetd/regreet.css, not in this theme.
|
||||
|
|
@ -40,7 +40,7 @@ reboot = ["systemctl", "reboot"]
|
|||
poweroff = ["systemctl", "poweroff"]
|
||||
|
||||
[appearance]
|
||||
greeting_msg = "Welcome back"
|
||||
greeting_msg = "-< CREW AUTHENTICATION >-"
|
||||
|
||||
[widget.clock]
|
||||
format = "%H:%M"
|
||||
|
|
|
|||
Loading…
Reference in New Issue