feat(theme): finish neon-glass polish (#88)
Some checks failed
Check / eval (push) Has been cancelled

Rewrite whole-swap rofi.rasi to rofi-native @colors (was invalid CSS
var()); cyan glass panel matching Boreal's hex-alpha pattern. btop
titles/selection in accent cyan; ui rounding/opacity tuned; preview.png
from theme-shot. Bar stays generated from JSON (no waybar.css).

Verified: V2 — contrast 24×7; theme-wholeswap; theme-shot neon-glass
desktop+menu viewed; boreal theme-shot regression green.
This commit is contained in:
Bernardo Magri
2026-07-11 11:07:02 +01:00
parent 2cd38e168d
commit 13f1b2b70e
8 changed files with 110 additions and 65 deletions

View File

@@ -28,14 +28,14 @@
"size": 11
},
"ui": {
"gapsIn": 5,
"gapsOut": 12,
"gapsIn": 6,
"gapsOut": 14,
"borderSize": 2,
"rounding": 10,
"rounding": 14,
"iconSize": 36,
"activeOpacity": 1.0,
"inactiveOpacity": 0.95,
"terminalOpacity": 0.96,
"activeOpacity": 0.96,
"inactiveOpacity": 0.90,
"terminalOpacity": 0.94,
"blur": true,
"shadow": true
},

View File

@@ -1,9 +1,10 @@
# Neon Glass — btop whole-swap (keep hexes aligned with neon-glass.json)
theme[main_bg]="#0B0E14"
theme[main_fg]="#E0E6F0"
theme[title]="#E0E6F0"
theme[title]="#00F0FF"
theme[hi_fg]="#00F0FF"
theme[selected_bg]="#1E2530"
theme[selected_fg]="#E0E6F0"
theme[selected_fg]="#00F0FF"
theme[inactive_fg]="#4B566B"
theme[graph_text]="#8F9BB3"
theme[meter_bg]="#151A22"

Binary file not shown.

Before

Width:  |  Height:  |  Size: 202 KiB

After

Width:  |  Height:  |  Size: 202 KiB

View File

@@ -1,93 +1,133 @@
/*
* Neon Glass Rofi Theme
* Glassmorphic, transparent, blurred background with glowing accents.
/**
* Neon Glass — rofi whole-swap (themes/<slug>/rofi.rasi).
* Vibe: cyber-frost panel on near-black void — cyan rim light, soft
* violet alt, translucent surfaces (hex-alpha, same pattern as Boreal's
* glassBg). Structure mirrors the generated theme so the theme-grid
* picker's -theme-str still lays out. No configuration {} block —
* modi/terminal/show-icons come from modules/home/rofi.nix.
*
* Palette locks to themes/neon-glass.json (keep in sync on color edits).
*/
* {
/* Using standard theme palette via env variables injected by home-manager,
or fallback if testing independently. The whole-swap still gets the
colors injected into the RASI by the module! */
base: #0B0E14;
glassBg: #0B0E14E0; /* ~88% opaque void glass */
surface: #151A22;
glassSurf: #151A22CC;
overlay: #1E2530;
text: #E0E6F0;
subtext: #8F9BB3;
muted: #4B566B;
accent: #00F0FF;
accentAlt: #B026FF;
accentSoft: #00F0FF33; /* cyan wash for selection */
neonEdge: #00F0FF80; /* cyan border glow */
good: #00FFA3;
warn: #FFD000;
bad: #FF003C;
font: "Inter 12";
background-color: transparent;
text-color: var(text, #E0E6F0);
font: "Inter 13";
text-color: @text;
}
window {
width: 600px;
/* transparent base with slight tint */
background-color: rgba(11, 14, 20, 0.45);
background-color: @glassBg;
border: 1px;
border-color: rgba(0, 240, 255, 0.3);
border-radius: 24px;
padding: 24px;
/* Blur would be applied via hyprland layerrule for rofi */
border-color: @neonEdge;
border-radius: 16px;
width: 620px;
location: center;
anchor: center;
padding: 18px;
}
mainbox {
spacing: 16px;
background-color: transparent;
children: [ inputbar, message, listview ];
spacing: 14px;
}
inputbar {
background-color: rgba(21, 26, 34, 0.5);
children: [ prompt, entry ];
background-color: @glassSurf;
text-color: @text;
border: 1px;
border-color: rgba(0, 240, 255, 0.5);
border-color: @neonEdge;
border-radius: 12px;
padding: 12px 16px;
spacing: 12px;
children: [ prompt, entry ];
}
prompt {
text-color: var(accent, #00F0FF);
}
prompt { text-color: @accent; }
entry {
placeholder: "Search...";
placeholder-color: var(subtext, #8F9BB3);
text-color: @text;
cursor: text;
placeholder: "Search…";
placeholder-color: @muted;
}
listview {
lines: 7;
spacing: 8px;
background-color: transparent;
columns: 1;
lines: 8;
dynamic: true;
scrollbar: true;
border: 0px;
spacing: 6px;
padding: 4px 0px 0px 0px;
}
element {
padding: 10px 16px;
background-color: transparent;
text-color: @text;
orientation: horizontal;
border-radius: 12px;
padding: 10px 14px;
spacing: 12px;
}
element normal.normal, element alternate.normal {
element normal.normal,
element alternate.normal {
background-color: transparent;
}
/* Selected: soft cyan wash + bright accent label (glass highlight). */
element selected.normal {
background-color: rgba(0, 240, 255, 0.15);
background-color: @accentSoft;
text-color: @accent;
border: 1px;
border-color: rgba(0, 240, 255, 0.4);
text-color: var(accent, #00F0FF);
border-color: @neonEdge;
}
element-icon {
size: 24px;
background-color: transparent;
size: 30px;
cursor: inherit;
}
element-text {
background-color: transparent;
text-color: inherit;
highlight: bold;
vertical-align: 0.5;
}
element-text selected {
text-color: var(accent, #00F0FF);
message { padding: 0px; }
textbox {
background-color: @glassSurf;
text-color: @text;
border: 1px;
border-color: @overlay;
border-radius: 12px;
padding: 10px 14px;
}
scrollbar {
width: 4px;
handle-width: 4px;
handle-color: rgba(0, 240, 255, 0.8);
background-color: rgba(21, 26, 34, 0.5);
handle-color: @accent;
background-color: @surface;
border: 0px;
}