feat(themes): full revision of executive-slate — palette rebuild + real whole-swap bar
All checks were successful
Check / eval (push) Successful in 3m15s
All checks were successful
Check / eval (push) Successful in 3m15s
The executive-slate preset shipped a waybar.css that referenced @base/@accent
with no @define-color block, and no matching waybar.jsonc — so the raw-read
override ran a largely unstyled bar (the item-28 partial-whole-swap defect).
The palette was also flat (base->surface only 1.13x) with a dim accent
(#4D78CC, 3.91 on base).
- Palette: widen surface stepping (base->surface 1.13x -> 1.29x so panels/
selection/hover separate), brighten the accent (#4D78CC -> #5A8AE6, 3.91 ->
5.04 on base, now AA text), lift subtext/good/warn/bad a tier, realign ansi,
soften bright-white (#FFFFFF -> #F0F3F9). text stays 12.5 AAA. Contrast
checker: all 23 themes x 7 pairings pass.
- Waybar: complete the bespoke bar as a real whole-swap. New waybar.jsonc with
the full 17-module set (parity with summer-day/night); waybar.css rewritten
to lead with its own @define-color block and cover every module + state class
the helper scripts emit (.recording/.activated/.on/.available/.dnd-*/battery).
Identity: solid, edge-to-edge, sharp corners, accent underline on the active
workspace.
- Rofi: drop the broken var() idiom for the house *{}/@name convention (split
border syntax, message/textbox/scrollbar elements for the theme-grid picker).
- CONVENTIONS: Waybar parity rule now names executive-slate as a third
whole-swap target (was stale at summer-only).
V1: nix flake check --no-build green; strict JSON parse of both files; real
rofi parsed the .rasi cleanly; with executive-slate set active, the module
eval resolves waybar.settings -> the jsonc, waybar.style -> the css, rofi.theme
-> the override rasi, and theme.nix accepts the palette. NOT yet done: on-screen
render of the bar/rofi/desktop (V2/V3) and preview.png (deferred to on-hardware
capture, per the chosen path).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -1,81 +1,119 @@
|
||||
/*
|
||||
* Executive Slate Rofi Theme
|
||||
* Clean, flat, functional, professional.
|
||||
/**
|
||||
* Executive Slate — rofi whole-swap (themes/<slug>/rofi.rasi).
|
||||
* Identity: a flat, sharp-cornered "control panel". No zebra, no glow —
|
||||
* a solid slate window, a recessed surface inputbar, and one accent edge
|
||||
* marking the selected row. The `configuration {}` block is omitted on
|
||||
* purpose — modi/terminal/show-icons come from modules/home/rofi.nix.
|
||||
* Element structure mirrors the generated theme so the theme-grid
|
||||
* picker's per-invocation -theme-str (vertical cards) still lays out.
|
||||
*/
|
||||
|
||||
* {
|
||||
base: #191C24;
|
||||
surface: #2A3040;
|
||||
overlay: #3E4759;
|
||||
text: #D7DDEA;
|
||||
subtext: #9AA5BB;
|
||||
muted: #5C6578;
|
||||
accent: #5A8AE6;
|
||||
accentAlt: #86A9F2;
|
||||
|
||||
font: "Inter 13";
|
||||
background-color: transparent;
|
||||
text-color: var(text, #D4DAE8);
|
||||
font: "Inter 15";
|
||||
text-color: @text;
|
||||
}
|
||||
|
||||
window {
|
||||
width: 600px;
|
||||
background-color: var(base, #1A1D24);
|
||||
background-color: @base;
|
||||
border: 1px;
|
||||
border-color: var(overlay, #333947);
|
||||
border-color: @overlay;
|
||||
border-radius: 4px;
|
||||
padding: 24px;
|
||||
width: 40%;
|
||||
location: center;
|
||||
anchor: center;
|
||||
padding: 12px;
|
||||
}
|
||||
|
||||
mainbox {
|
||||
spacing: 12px;
|
||||
background-color: transparent;
|
||||
children: [ inputbar, message, listview ];
|
||||
spacing: 10px;
|
||||
}
|
||||
|
||||
inputbar {
|
||||
background-color: var(surface, #232731);
|
||||
children: [ prompt, entry ];
|
||||
background-color: @surface;
|
||||
text-color: @text;
|
||||
border: 1px;
|
||||
border-color: var(overlay, #333947);
|
||||
border-color: @overlay;
|
||||
border-radius: 4px;
|
||||
padding: 10px 14px;
|
||||
spacing: 10px;
|
||||
children: [ prompt, entry ];
|
||||
}
|
||||
|
||||
prompt {
|
||||
text-color: var(accent, #4D78CC);
|
||||
}
|
||||
prompt { text-color: @accent; }
|
||||
|
||||
entry {
|
||||
placeholder: "Type to filter...";
|
||||
placeholder-color: var(subtext, #8792A6);
|
||||
text-color: @text;
|
||||
cursor: text;
|
||||
placeholder: "Type to filter…";
|
||||
placeholder-color: @muted;
|
||||
}
|
||||
|
||||
listview {
|
||||
lines: 7;
|
||||
spacing: 4px;
|
||||
background-color: transparent;
|
||||
columns: 1;
|
||||
lines: 8;
|
||||
dynamic: true;
|
||||
scrollbar: false;
|
||||
border: 0px;
|
||||
spacing: 4px;
|
||||
padding: 4px 0px 0px 0px;
|
||||
}
|
||||
|
||||
element {
|
||||
padding: 8px 14px;
|
||||
background-color: transparent;
|
||||
text-color: @text;
|
||||
orientation: horizontal;
|
||||
border-radius: 4px;
|
||||
padding: 9px 14px;
|
||||
spacing: 12px;
|
||||
}
|
||||
|
||||
element normal.normal, element alternate.normal {
|
||||
element normal.normal,
|
||||
element alternate.normal {
|
||||
background-color: transparent;
|
||||
}
|
||||
|
||||
/* Functional highlight: solid surface color with a subtle accent edge */
|
||||
/* The one highlight: a solid surface row with an accent edge. */
|
||||
element selected.normal {
|
||||
background-color: var(surface, #232731);
|
||||
text-color: var(text, #D4DAE8);
|
||||
border: 0 0 0 4px;
|
||||
border-color: var(accent, #4D78CC);
|
||||
background-color: @surface;
|
||||
text-color: @text;
|
||||
border: 0px 0px 0px 3px;
|
||||
border-color: @accent;
|
||||
}
|
||||
|
||||
element-icon {
|
||||
size: 24px;
|
||||
background-color: transparent;
|
||||
size: 36px;
|
||||
cursor: inherit;
|
||||
}
|
||||
|
||||
element-text {
|
||||
background-color: transparent;
|
||||
text-color: inherit;
|
||||
highlight: bold;
|
||||
vertical-align: 0.5;
|
||||
}
|
||||
|
||||
element-text selected {
|
||||
text-color: var(text, #D4DAE8);
|
||||
message { padding: 0px; }
|
||||
|
||||
textbox {
|
||||
background-color: @surface;
|
||||
text-color: @text;
|
||||
border: 1px;
|
||||
border-color: @overlay;
|
||||
border-radius: 4px;
|
||||
padding: 9px 14px;
|
||||
}
|
||||
|
||||
scrollbar { width: 0px; }
|
||||
|
||||
Reference in New Issue
Block a user