From 786a8ad30eb07cee3871a02f7756fdbf8d29364a Mon Sep 17 00:00:00 2001 From: Bernardo Magri Date: Sat, 18 Jul 2026 12:44:12 +0100 Subject: [PATCH] =?UTF-8?q?feat(themes):=20kiln=20+=20kiln-clay=20?= =?UTF-8?q?=E2=80=94=20the=20third=20exclusive=20pair,=20brand=20new?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Completes the three dark/light pairs for v1 (batch: 0ba1762, e51c8a7). Kiln is a potter's workshop at night, lit only by the kiln: warm near-black (#1D1815), copper accent (#D68C5C, 6.5:1), brass accentAlt, CaskaydiaCove, rounding 8. Kiln Clay is the same studio at midday: cream plaster (#F4EDE3), espresso text (11.1:1 AAA), fired-copper accent (#A34F1F, 4.89:1), brick-red bad. Both waybars are a NEW whole-swap identity — 'the workbench': ONE continuous floating plank (window#waybar carries the surface, modules transparent) — deliberately distinct from boreal's three pills and slate's edge-to-edge strip; module set verbatim-parity with the generated config. Matched rofi, btop themes. The wallpapers share identical ring geometry — banked-coal heat rings at night, terracotta glaze rings at noon — so the autoTheme flip visibly rhymes. Sync sweep in this commit (LOOP §5): README 24->28 presets + the whole-swap list now names the three pairs; CONVENTIONS waybar parity list gains the four new slugs; OVERRIDES autoTheme table points at the pairs; HARDWARE-QUEUE gains the batch V3 entry (real-GL blur, btop visual, launcher grid, tray menus, pair flip); BACKLOG files #153 (PROPOSED: per-theme desktop widgets — the conky idea, engine spike needed, not v1). Verification: V2. Full targeted set green on the final tree: theme-contrast, theme-wholeswap (previews + backgrounds + CSS self-containment), waybar-language, waybar-swap-env, rofi-text-width, state-sync-validate, auto-theme VM; nix flake check --no-build green. Visual protocol: theme-shot VM desktop + menu viewed for BOTH themes (plank renders as one island, copper/terracotta semantics, legible menus; /nix/store/2fizd945...theme-shot-kiln and /nix/store/0126yd48...theme-shot-kiln-clay). audit-theme-design: CVD-only findings (≤ executive-slate's own baseline); ANSI slots in-family after the magenta retune. V3 pending: HARDWARE-QUEUE entry above. btop visual is VM-blocked (GL terminal never starts under softGL) — file-level assertions only, listed for hardware. Design + wallpapers on Fable; assets by a Sonnet subagent to a written identity spec; reviewed on Fable. Co-Authored-By: Claude Fable 5 --- README.md | 9 +- agent/BACKLOG.md | 15 +++ agent/CONVENTIONS.md | 3 +- agent/HARDWARE-QUEUE.md | 21 ++++ docs/OVERRIDES.md | 2 +- themes/kiln-clay.json | 60 +++++++++++ themes/kiln-clay/btop.theme | 25 +++++ themes/kiln-clay/preview.png | Bin 0 -> 44157 bytes themes/kiln-clay/rofi.rasi | 122 +++++++++++++++++++++ themes/kiln-clay/waybar.css | 192 ++++++++++++++++++++++++++++++++++ themes/kiln-clay/waybar.jsonc | 183 ++++++++++++++++++++++++++++++++ themes/kiln.json | 60 +++++++++++ themes/kiln/btop.theme | 25 +++++ themes/kiln/preview.png | Bin 0 -> 36574 bytes themes/kiln/rofi.rasi | 121 +++++++++++++++++++++ themes/kiln/waybar.css | 192 ++++++++++++++++++++++++++++++++++ themes/kiln/waybar.jsonc | 183 ++++++++++++++++++++++++++++++++ 17 files changed, 1207 insertions(+), 6 deletions(-) create mode 100644 themes/kiln-clay.json create mode 100644 themes/kiln-clay/btop.theme create mode 100644 themes/kiln-clay/preview.png create mode 100644 themes/kiln-clay/rofi.rasi create mode 100644 themes/kiln-clay/waybar.css create mode 100644 themes/kiln-clay/waybar.jsonc create mode 100644 themes/kiln.json create mode 100644 themes/kiln/btop.theme create mode 100644 themes/kiln/preview.png create mode 100644 themes/kiln/rofi.rasi create mode 100644 themes/kiln/waybar.css create mode 100644 themes/kiln/waybar.jsonc diff --git a/README.md b/README.md index 82e102e..3202934 100644 --- a/README.md +++ b/README.md @@ -36,7 +36,7 @@ Flat on purpose. Two module trees, one options file each, no hidden layers. ├── flake.nix # inputs + the downstream API (exports below) ├── lib.nix # nomarchy.lib.mkFlake — one-call downstream wrapper ├── state.json # ★ THE single source of truth (git-tracked!) -├── themes/ # 24 presets: .json + optional / assets +├── themes/ # 28 presets: .json + optional / assets │ ├── nord.json # palette (required, works alone) │ └── nord/ # assets (optional, fixed filenames) │ ├── backgrounds/ # wallpapers (pinned nomarchy-wallpapers input, not this repo) @@ -440,8 +440,9 @@ per theme — a single place to look, unlike the old distro's split: | `waybar.jsonc` | whole-swap for the bar *layout* (must be plain JSON) | | `rofi.rasi` | **whole-swap**: replaces the generated launcher/menu theme entirely | -Four themes ship a `waybar.css` identity (summer-day, summer-night, -executive-slate, boreal). Custom user themes can live in +Eight themes ship a `waybar.css` identity: the three Nomarchy-exclusive +day/night pairs — boreal ↔ boreal-dawn, executive-slate ↔ executive-ivory, +kiln ↔ kiln-clay — plus summer-night ↔ summer-day. Custom user themes can live in `$NOMARCHY_PATH/themes/` (preset lookup) and `nomarchy.themesDir` (eval-time asset probe) — including their own `backgrounds/`, which wins over the pinned `nomarchy-wallpapers` input (checked first); an explicit `wallpaper` @@ -450,7 +451,7 @@ path in `state.json` works too. ## 5. Day-to-day ```sh -nomarchy-state-sync list # 24 presets (nord, gruvbox, rose-pine, …) +nomarchy-state-sync list # 28 presets (nord, gruvbox, rose-pine, …) nomarchy-state-sync apply kanagawa # whole desktop, one generation (~a switch) nomarchy-state-sync set ui.gapsOut 16 # tweak one knob (also a switch) nomarchy-state-sync bg next # cycle wallpapers — instant, no rebuild diff --git a/agent/BACKLOG.md b/agent/BACKLOG.md index ee62a1c..4bef0ff 100644 --- a/agent/BACKLOG.md +++ b/agent/BACKLOG.md @@ -129,6 +129,21 @@ high-ROI, etc.) live in the journal + ROADMAP — not here.* ### Product / day-2 +### 153. Desktop widgets (clock / system stats) as an opt-in per-theme surface + +Pitch (filed while shipping the three exclusive theme pairs, 2026-07-18): +themed desktop widgets — a clock, calendar, or system-stats panel living on +the wallpaper, conky-style — would deepen the identity themes (imagine +kiln's copper stats panel or executive-ivory's letterhead clock). No such +surface exists today, so it is a NEW theming surface: per CONVENTIONS it +must consume the palette from the state JSON (no side pipeline) and ship +as an opt-in `nomarchy.*` toggle with a commented template example. Engine +choice is the real decision — conky is X11-era; a Wayland layer-shell +widget system (eww or a small QML/GTK layer-shell tool) fits the stack +better. Cost: moderate (engine spike + palette bridge + 2–3 widget +layouts; start with the exclusive pairs only, not all 28 themes). Value: +v1+ polish, not a v1 blocker. + ### 146. `[watch]` hypridle hangs instead of exiting when its compositor vanishes **Rewritten 2026-07-16, hours after filing: the premise was disproven and almost diff --git a/agent/CONVENTIONS.md b/agent/CONVENTIONS.md index ac43422..78805c6 100644 --- a/agent/CONVENTIONS.md +++ b/agent/CONVENTIONS.md @@ -46,7 +46,8 @@ those, it probably shouldn't exist. named `writeShellScriptBin`s on PATH (so static configs can exec them by bare name), and are added to **both** the generated `waybar.nix` config **and** every `waybar.jsonc` whole-swap — summer-day, summer-night, - executive-slate and boreal (the parity rule). + executive-slate, executive-ivory, boreal, boreal-dawn, kiln and + kiln-clay (the parity rule). - **Theming:** every new visual surface consumes the palette from the state JSON. There is no second renderer to keep in sync — add the key to the JSON, consume it in the module. diff --git a/agent/HARDWARE-QUEUE.md b/agent/HARDWARE-QUEUE.md index a3211f9..41adc82 100644 --- a/agent/HARDWARE-QUEUE.md +++ b/agent/HARDWARE-QUEUE.md @@ -28,6 +28,27 @@ Everything else below stays open; order is convenience, not a gate. ## Any machine (dev box is fine) +- [ ] **Theme pairs V3 — the four new themes on real GL** — after pulling + the pair commits: `nomarchy-state-sync apply ` for each of + boreal-dawn, executive-ivory, kiln, kiln-clay. Pass = all of: + (1) the bar renders true — boreal-dawn's frosted pills actually blur + what's behind them (softGL VM can't prove blur), kiln's plank shows + its copper edge, no font-fallback boxes (GeistMono / JetBrainsMono / + CaskaydiaCove); (2) wallpaper paints at native res, no banding on the + kiln ember gradient; (3) Kitty + btop under each theme — btop colors + match (the VM never started the GL terminal; btop.theme is + file-asserted only); (4) boreal-dawn app launcher (SUPER+Space) lays + out its icon grid; (5) an nm-applet/tray menu is readable under all + four (the `*`-reset counter-rules). If a VM-rendered preview looks + off in the theme-picker grid next to the hardware-captured ones, + recapture that preview on hardware into themes//preview.png. +- [ ] **Auto-theme pair flip on hardware** — set + `settings.autoTheme.{day,night}` to one of the new pairs (e.g. + kiln-clay / kiln), force sunrise/sunset around the current time, + let the timer flip once each way. Pass = the whole desktop switches + in one generation, and nothing leaks from the previous theme — + fonts, rounding, terminal opacity all reset (the per-theme + appearance block), wallpaper follows. - [ ] **#148 dock-intent enforcement without auto-profiles (dev box, docked)** — after pulling the #148 commit: **log out and back in first** — the watcher is `exec-once`, so `nomarchy-home` alone leaves the old one diff --git a/docs/OVERRIDES.md b/docs/OVERRIDES.md index 3ec9846..4b7aa44 100644 --- a/docs/OVERRIDES.md +++ b/docs/OVERRIDES.md @@ -67,7 +67,7 @@ State lives in `settings.autoTheme`: | Field | Meaning | |---|---| | `enable` | on / off | -| `day` / `night` | theme slugs — e.g. `summer-day` / `summer-night` (see `nomarchy-state-sync list`) | +| `day` / `night` | theme slugs (see `nomarchy-state-sync list`) — the exclusive pairs are made for this: `boreal-dawn`/`boreal`, `executive-ivory`/`executive-slate`, `kiln-clay`/`kiln`, `summer-day`/`summer-night` | | `sunrise` / `sunset` | switch times, `"HH:MM"` (24-hour) | A timer re-checks every ~15 minutes: the day theme applies around sunrise, the diff --git a/themes/kiln-clay.json b/themes/kiln-clay.json new file mode 100644 index 0000000..bb99acf --- /dev/null +++ b/themes/kiln-clay.json @@ -0,0 +1,60 @@ +{ + "version": 1, + "name": "Kiln Clay", + "slug": "kiln-clay", + "mode": "light", + "wallpaper": "", + "colors": { + "base": "#F4EDE3", + "mantle": "#DFD4C4", + "surface": "#EAE1D3", + "overlay": "#B1A28E", + "text": "#39302A", + "subtext": "#5D5142", + "muted": "#877867", + "accent": "#A34F1F", + "accentAlt": "#75621A", + "good": "#586F26", + "warn": "#8A5E08", + "bad": "#AC3B31" + }, + "border": { + "active": "accent", + "inactive": "overlay" + }, + "fonts": { + "mono": "CaskaydiaCove Nerd Font", + "ui": "Inter", + "size": 11 + }, + "ui": { + "gapsIn": 5, + "gapsOut": 12, + "borderSize": 2, + "rounding": 8, + "iconSize": 40, + "activeOpacity": 1.0, + "inactiveOpacity": 0.95, + "terminalOpacity": 0.95, + "blur": true, + "shadow": true + }, + "ansi": [ + "#39302A", + "#AC3B31", + "#586F26", + "#8A5E08", + "#3E5F8A", + "#7E4A8A", + "#33705F", + "#F4EDE3", + "#877867", + "#C05045", + "#6A8332", + "#A06E10", + "#4E70A0", + "#96609F", + "#418472", + "#FAF6EF" + ] +} diff --git a/themes/kiln-clay/btop.theme b/themes/kiln-clay/btop.theme new file mode 100644 index 0000000..5b30cd6 --- /dev/null +++ b/themes/kiln-clay/btop.theme @@ -0,0 +1,25 @@ +theme[main_bg]="#F4EDE3" +theme[main_fg]="#39302A" +theme[title]="#39302A" +theme[hi_fg]="#A34F1F" +theme[selected_bg]="#EAE1D3" +theme[selected_fg]="#39302A" +theme[inactive_fg]="#877867" +theme[graph_text]="#5D5142" +theme[meter_bg]="#DFD4C4" +theme[proc_misc]="#75621A" +theme[cpu_box]="#A34F1F" +theme[mem_box]="#586F26" +theme[net_box]="#75621A" +theme[proc_box]="#B1A28E" +theme[div_line]="#B1A28E" +theme[temp_start]="#586F26" +theme[temp_mid]="#8A5E08" +theme[temp_end]="#AC3B31" +theme[cpu_start]="#586F26" +theme[cpu_mid]="#8A5E08" +theme[cpu_end]="#AC3B31" +theme[free_start]="#586F26" +theme[used_start]="#8A5E08" +theme[download_start]="#A34F1F" +theme[upload_start]="#75621A" diff --git a/themes/kiln-clay/preview.png b/themes/kiln-clay/preview.png new file mode 100644 index 0000000000000000000000000000000000000000..7545a4df49a63a7017e16cebf1588fdc68950a6d GIT binary patch literal 44157 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/rofi.rasi). + * The base theme: the same solid clay panel as Kiln, lit by midday + * terracotta edge glow instead of ember-copper — cream plaster, not + * frost or glass. Element structure mirrors the generated theme so the + * theme-grid picker's per-invocation -theme-str still lays out. The + * `configuration {}` block is omitted on purpose — it comes from + * modules/home/rofi.nix. + */ + +* { + base: #F4EDE3; + panelBg: #F4EDE3F5; + surface: #EAE1D3; + overlay: #B1A28E; + text: #39302A; + subtext: #5D5142; + muted: #877867; + accent: #A34F1F; + accentAlt: #75621A; + accentEdge: #A34F1F59; + accentWash: #A34F1F33; + + font: "CaskaydiaCove Nerd Font 11"; + background-color: transparent; + text-color: @text; +} + +window { + background-color: @panelBg; + border: 1px; + border-color: @accentEdge; + border-radius: 8px; + width: calc( 84ch min 65% ); + location: center; + anchor: center; + padding: 16px; +} + +mainbox { + background-color: transparent; + children: [ inputbar, message, listview ]; + spacing: 12px; +} + +inputbar { + children: [ prompt, entry ]; + background-color: @surface; + text-color: @text; + border-radius: 8px; + padding: 12px 16px; + spacing: 10px; +} + +prompt { text-color: @accent; } + +entry { + text-color: @text; + cursor: text; + placeholder: "Search…"; + placeholder-color: @muted; +} + +listview { + background-color: transparent; + columns: 1; + lines: 8; + dynamic: true; + scrollbar: true; + spacing: 6px; + padding: 4px 0px 0px 0px; +} + +element { + background-color: transparent; + text-color: @text; + orientation: horizontal; + border-radius: 8px; + padding: 10px 14px; + spacing: 12px; +} + +element normal.normal, +element alternate.normal { + background-color: transparent; +} + +/* Selected row lifts on a soft terracotta wash. */ +element selected.normal { + background-color: @accentWash; + text-color: @text; +} + +element-icon { + background-color: transparent; + size: 30px; + cursor: inherit; +} + +element-text { + background-color: transparent; + text-color: inherit; + highlight: bold; + vertical-align: 0.5; +} + +message { padding: 0px; } + +textbox { + background-color: @surface; + text-color: @text; + border-radius: 8px; + padding: 10px 14px; +} + +scrollbar { + width: 4px; + handle-width: 4px; + handle-color: @accent; + background-color: @surface; + border: 0px; +} diff --git a/themes/kiln-clay/waybar.css b/themes/kiln-clay/waybar.css new file mode 100644 index 0000000..2058d49 --- /dev/null +++ b/themes/kiln-clay/waybar.css @@ -0,0 +1,192 @@ +/* + * Kiln Clay — Waybar whole-swap (themes//waybar.css). + * + * A theme waybar.css replaces the ENTIRE generated stylesheet and is read + * raw (no palette is prepended), so this file MUST define its own colors. + * Identity: "the workbench" at midday — the same ONE continuous floating + * island as Kiln's night plank, translated to daylight: cream plaster + * worktop, terracotta edge-glow. No pills, no edge-to-edge strip: every + * module — including the tray — sits directly on the one plank, seamless. + * Companion: waybar.jsonc. + */ + +@define-color base #F4EDE3; +@define-color mantle #DFD4C4; +@define-color surface #EAE1D3; +@define-color overlay #B1A28E; +@define-color text #39302A; +@define-color subtext #5D5142; +@define-color muted #877867; +@define-color accent #A34F1F; +@define-color accentAlt #75621A; +@define-color good #586F26; +@define-color warn #8A5E08; +@define-color bad #AC3B31; + +/* NB: this `*` reset reaches the SNI tray menus Waybar hosts too (its + stylesheet applies process-wide, at a priority user gtk.css cannot + out-rank). The menu block right below undoes the damage — keep the two + in sync. Do NOT scope `*` to window#waybar instead: the id's + specificity would beat the class rules below (the plank) and wreck the + bar. */ +* { + /* Mono Nerd face for status glyphs (tight right bearings on the + proportional Symbols face make icon+percentage collide). */ + font-family: "CaskaydiaCove Nerd Font", "Symbols Nerd Font Mono"; + font-size: 13px; + font-weight: 500; + border: none; + border-radius: 0; + min-height: 0; +} + +/* ── Tray menus (nm-applet & co live in Waybar's process) ───────────── + Undo the `*` reset for them: same stylesheet, higher specificity. + Arrows/checks are CSS-sized nodes — min-height 0 makes them invisible; + separators die the same way; the bar's mono face reads wrong in text + menus. */ +menu, menu * { font-family: "Inter", sans-serif; } +menu menuitem arrow { min-width: 16px; min-height: 16px; } +menu check, menu radio { min-width: 14px; min-height: 14px; } +menu separator { + min-height: 1px; + margin: 5px 0; + background: alpha(@text, 0.15); +} + +/* The plank itself — one solid worktop spanning the island, a faint + terracotta edge-glow lifting it off the wallpaper. */ +window#waybar { + background: alpha(@base, 0.94); + border: 1px solid alpha(@accent, 0.35); + border-radius: 8px; + color: @text; +} + +.modules-left, +.modules-center, +.modules-right { + background: transparent; + padding: 0 6px; + margin: 0; +} + +/* Every module sits ON the plank: transparent, so nothing boxes the tray + off from the status icons — the seamless-cluster requirement. */ +#custom-nomarchy, +#clock, +#custom-recording, +#custom-updates, +#custom-doctor, +#idle_inhibitor, +#custom-nightlight, +#custom-airplane, +#language, +#custom-vpn, +#pulseaudio, +#battery, +#custom-powerprofile, +#tray, +#custom-notification, +#custom-powermenu { + background: transparent; + color: alpha(@text, 0.9); + padding: 0 8px; + margin: 0; +} + +/* ── Launcher — the terracotta Nomarchy mark opens the plank ────────── + The mark lives at U+F000 in the dedicated "Nomarchy" font; pin the + family or the Nerd Font's glass glyph at the same codepoint wins. */ +#custom-nomarchy { + color: @accent; + font-family: Nomarchy; + font-size: 18px; + padding: 0 12px 0 14px; +} +#custom-nomarchy:hover { color: @accentAlt; } + +/* ── Clock — unified time · date ─────────────────────────────────────*/ +#clock { + color: @text; + font-weight: 600; + padding-left: 4px; +} + +/* ── Workspaces — dots that fire to a fired-clay pill when active ─────*/ +#workspaces { padding: 0 2px; } + +#workspaces button { + color: @muted; + padding: 0 9px; + margin: 3px 1px; + border-radius: 6px; + transition: color 0.2s ease, background 0.2s ease; +} +#workspaces button:hover { + color: @text; + background: alpha(@overlay, 0.6); +} +#workspaces button.active { + color: @base; + background: @accent; + border-radius: 6px; +} +#workspaces button.urgent { + color: @base; + background: @bad; + border-radius: 6px; +} + +/* ── Status semantics (neutral until a state fires) ──────────────────*/ +#custom-recording.recording { color: @bad; } +#custom-updates.available { color: @accent; } +#custom-doctor { color: @bad; } +#idle_inhibitor.activated { color: @warn; } +#custom-nightlight.on { color: @warn; } +#custom-airplane.on { color: @warn; } +#custom-vpn.on { color: @good; } +#pulseaudio.muted { color: @muted; } + +#battery.charging { color: @good; } +#battery.warning:not(.charging) { color: @warn; } +#battery.critical:not(.charging) { color: @bad; } + +/* Icon-only status modules carry no text, so they don't get the 13pt + Pango icon span the icon+text modules (volume/battery/language) use — + bump their font-size to match, or these glyphs read noticeably smaller + than their neighbours. */ +#custom-recording, +#custom-updates, +#custom-doctor, +#custom-nightlight, +#custom-airplane, +#custom-vpn, +#custom-notification { font-size: 17px; } +/* Speedometer + caffeine cup render small in their em box — a touch more. */ +#custom-powerprofile, +#idle_inhibitor { font-size: 18px; } + +#custom-notification.notification { color: @accent; } +#custom-notification.dnd-none, +#custom-notification.dnd-notification, +#custom-notification.inhibited-none, +#custom-notification.inhibited-notification { color: @muted; } + +/* Tray shares the plank — same transparent background, its own modest + padding so nm-applet & friends breathe with the status icons. */ +#tray { padding: 0 6px; } +#tray > .passive { -gtk-icon-effect: dim; } +#tray > .needs-attention { -gtk-icon-effect: highlight; } + +/* Power button closes the plank on the right; warms to alert on hover. */ +#custom-powermenu { color: @subtext; padding: 0 12px 0 8px; } +#custom-powermenu:hover { color: @bad; } + +/* ── Tooltips — solid plaster, terracotta edge ───────────────────────*/ +tooltip { + background: alpha(@base, 0.97); + border: 1px solid alpha(@accent, 0.4); + border-radius: 8px; +} +tooltip label { color: @text; } diff --git a/themes/kiln-clay/waybar.jsonc b/themes/kiln-clay/waybar.jsonc new file mode 100644 index 0000000..32133c5 --- /dev/null +++ b/themes/kiln-clay/waybar.jsonc @@ -0,0 +1,183 @@ +{ + "margin-top": 6, + "margin-left": 12, + "margin-right": 12, + "margin-bottom": 0, + "height": 38, + "layer": "bottom", + "position": "top", + "spacing": 4, + "reload_style_on_change": true, + "modules-left": [ + "custom/nomarchy", + "clock" + ], + "modules-center": [ + "hyprland/workspaces" + ], + "modules-right": [ + "custom/recording", + "custom/updates", + "custom/doctor", + "idle_inhibitor", + "custom/nightlight", + "hyprland/language", + "custom/vpn", + "custom/airplane", + "pulseaudio", + "battery", + "custom/powerprofile", + "tray", + "custom/notification", + "custom/powermenu" + ], + "custom/nomarchy": { + "interval": "once", + "format": "", + "on-click": "nomarchy-menu", + "tooltip-format": "Nomarchy menu" + }, + "clock": { + "format": "{:%H:%M · %a %d %b}", + "on-click": "nomarchy-calendar", + "tooltip": true, + "tooltip-format": "{:%A, %d %B %Y\n%Z (UTC%z)}" + }, + "hyprland/workspaces": { + "disable-scroll": true, + "all-outputs": true, + "on-click": "activate", + "on-scroll-up": "hyprctl dispatch workspace r+1", + "on-scroll-down": "hyprctl dispatch workspace r-1" + }, + "custom/recording": { + "return-type": "json", + "interval": 10, + "signal": 8, + "exec": "nomarchy-record status", + "on-click": "nomarchy-record stop" + }, + "custom/updates": { + "return-type": "json", + "interval": 1800, + "signal": 9, + "exec": "nomarchy-updates status", + "on-click": "nomarchy-updates upgrade-window" + }, + "custom/doctor": { + "return-type": "json", + "format": "{}", + "interval": 300, + "signal": 10, + "exec": "nomarchy-doctor-status", + "on-click": "nomarchy-menu doctor" + }, + "idle_inhibitor": { + "format": "{icon}", + "format-icons": { + "activated": " 󰅶 ", + "deactivated": " 󰾪 " + } + }, + "custom/nightlight": { + "return-type": "json", + "interval": 3, + "exec": "nomarchy-nightlight status", + "on-click": "nomarchy-nightlight toggle" + }, + "hyprland/language": { + "format": "󰌌 {short}", + "tooltip": false + }, + "custom/vpn": { + "return-type": "json", + "interval": 5, + "exec": "nomarchy-vpn-status", + "on-click": "nomarchy-vpn" + }, + "pulseaudio": { + "scroll-step": 5, + "format": "{icon}{volume}%", + "format-bluetooth": "{icon} {volume}%", + "format-bluetooth-muted": " {icon}", + "format-muted": "muted", + "format-icons": { + "headphone": " ", + "hands-free": " ", + "headset": " ", + "phone": " ", + "portable": " ", + "car": " ", + "default": [ + " ", + " ", + " " + ] + }, + "on-click": "wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle", + "on-click-right": "pwvucontrol", + "tooltip-format": "{desc} | {volume}%" + }, + "battery": { + "interval": 30, + "states": { + "warning": 25, + "critical": 10 + }, + "format": "{icon}{capacity}%", + "format-charging": "{capacity}%", + "format-plugged": "{capacity}%", + "tooltip-format-plugged": "Plugged in, not charging — held at {capacity}% by the battery charge cap\nCharging resumes ~10% below the cap · click to adjust", + "format-icons": [ + " ", + " ", + " ", + " ", + " " + ], + "on-click": "nomarchy-menu powermgmt", + "tooltip-format": "Battery status" + }, + "custom/powerprofile": { + "return-type": "json", + "interval": 5, + "exec": "nomarchy-powerprofile-status", + "on-click": "nomarchy-menu powermgmt" + }, + "tray": { + "icon-size": 15, + "spacing": 10 + }, + "custom/notification": { + "format": "{icon}", + "return-type": "json", + "exec": "swaync-client -swb", + "exec-if": "which swaync-client", + "escape": true, + "tooltip": true, + "on-click": "swaync-client -t -sw", + "on-click-right": "swaync-client -d -sw", + "format-icons": { + "none": "󰂜", + "notification": "󰂚", + "dnd-none": "󰂛", + "dnd-notification": "󰂛", + "inhibited-none": "󰂛", + "inhibited-notification": "󰂛", + "dnd-inhibited-none": "󰂛", + "dnd-inhibited-notification": "󰂛" + } + }, + "custom/powermenu": { + "format": "", + "on-click": "nomarchy-menu power", + "tooltip": false + }, + "custom/airplane": { + "return-type": "json", + "interval": 5, + "signal": 11, + "exec": "nomarchy-airplane status", + "on-click": "nomarchy-airplane toggle" + } +} diff --git a/themes/kiln.json b/themes/kiln.json new file mode 100644 index 0000000..8273b7e --- /dev/null +++ b/themes/kiln.json @@ -0,0 +1,60 @@ +{ + "version": 1, + "name": "Kiln", + "slug": "kiln", + "mode": "dark", + "wallpaper": "", + "colors": { + "base": "#1D1815", + "mantle": "#151110", + "surface": "#2C241E", + "overlay": "#41362D", + "text": "#EADFD3", + "subtext": "#B5A695", + "muted": "#77685A", + "accent": "#D68C5C", + "accentAlt": "#C8A94E", + "good": "#A0B36A", + "warn": "#E0A458", + "bad": "#E26D5A" + }, + "border": { + "active": "accent", + "inactive": "overlay" + }, + "fonts": { + "mono": "CaskaydiaCove Nerd Font", + "ui": "Inter", + "size": 11 + }, + "ui": { + "gapsIn": 5, + "gapsOut": 12, + "borderSize": 2, + "rounding": 8, + "iconSize": 40, + "activeOpacity": 1.0, + "inactiveOpacity": 0.94, + "terminalOpacity": 0.93, + "blur": true, + "shadow": true + }, + "ansi": [ + "#2C241E", + "#E26D5A", + "#A0B36A", + "#E0A458", + "#90A9C8", + "#BC8FC6", + "#9FBFAE", + "#EADFD3", + "#77685A", + "#EB8272", + "#AFC17C", + "#E8B46E", + "#A3B8D4", + "#CBA3D4", + "#B0CCBD", + "#F4EDE5" + ] +} diff --git a/themes/kiln/btop.theme b/themes/kiln/btop.theme new file mode 100644 index 0000000..5728df8 --- /dev/null +++ b/themes/kiln/btop.theme @@ -0,0 +1,25 @@ +theme[main_bg]="#1D1815" +theme[main_fg]="#EADFD3" +theme[title]="#EADFD3" +theme[hi_fg]="#D68C5C" +theme[selected_bg]="#2C241E" +theme[selected_fg]="#EADFD3" +theme[inactive_fg]="#77685A" +theme[graph_text]="#B5A695" +theme[meter_bg]="#151110" +theme[proc_misc]="#C8A94E" +theme[cpu_box]="#D68C5C" +theme[mem_box]="#A0B36A" +theme[net_box]="#C8A94E" +theme[proc_box]="#41362D" +theme[div_line]="#41362D" +theme[temp_start]="#A0B36A" +theme[temp_mid]="#E0A458" +theme[temp_end]="#E26D5A" +theme[cpu_start]="#A0B36A" +theme[cpu_mid]="#E0A458" +theme[cpu_end]="#E26D5A" +theme[free_start]="#A0B36A" +theme[used_start]="#E0A458" +theme[download_start]="#D68C5C" +theme[upload_start]="#C8A94E" diff --git a/themes/kiln/preview.png b/themes/kiln/preview.png new file mode 100644 index 0000000000000000000000000000000000000000..caa3d7d167cd098322a39f8dddb8747b5e07ef20 GIT binary patch literal 36574 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

Dv8N%u7QS>l5Yzu(;=}@hYT3B;vwwAx1=m}@T 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 m-}$}Y|K@jo{VQMl=Kmk-MOv#%7U8}C0000/rofi.rasi). + * The base theme: a solid warm clay panel lit by ember-copper edge glow — + * no frost, no glass, a potter's workbench at night. Element structure + * mirrors the generated theme so the theme-grid picker's per-invocation + * -theme-str still lays out. The `configuration {}` block is omitted on + * purpose — it comes from modules/home/rofi.nix. + */ + +* { + base: #1D1815; + panelBg: #1D1815F2; + surface: #2C241E; + overlay: #41362D; + text: #EADFD3; + subtext: #B5A695; + muted: #77685A; + accent: #D68C5C; + accentAlt: #C8A94E; + accentEdge: #D68C5C66; + accentWash: #D68C5C33; + + font: "CaskaydiaCove Nerd Font 11"; + background-color: transparent; + text-color: @text; +} + +window { + background-color: @panelBg; + border: 1px; + border-color: @accentEdge; + border-radius: 8px; + width: calc( 84ch min 65% ); + location: center; + anchor: center; + padding: 16px; +} + +mainbox { + background-color: transparent; + children: [ inputbar, message, listview ]; + spacing: 12px; +} + +inputbar { + children: [ prompt, entry ]; + background-color: @surface; + text-color: @text; + border-radius: 8px; + padding: 12px 16px; + spacing: 10px; +} + +prompt { text-color: @accent; } + +entry { + text-color: @text; + cursor: text; + placeholder: "Search…"; + placeholder-color: @muted; +} + +listview { + background-color: transparent; + columns: 1; + lines: 8; + dynamic: true; + scrollbar: true; + spacing: 6px; + padding: 4px 0px 0px 0px; +} + +element { + background-color: transparent; + text-color: @text; + orientation: horizontal; + border-radius: 8px; + padding: 10px 14px; + spacing: 12px; +} + +element normal.normal, +element alternate.normal { + background-color: transparent; +} + +/* Selected row lifts on a soft ember-copper wash. */ +element selected.normal { + background-color: @accentWash; + text-color: @text; +} + +element-icon { + background-color: transparent; + size: 30px; + cursor: inherit; +} + +element-text { + background-color: transparent; + text-color: inherit; + highlight: bold; + vertical-align: 0.5; +} + +message { padding: 0px; } + +textbox { + background-color: @surface; + text-color: @text; + border-radius: 8px; + padding: 10px 14px; +} + +scrollbar { + width: 4px; + handle-width: 4px; + handle-color: @accent; + background-color: @surface; + border: 0px; +} diff --git a/themes/kiln/waybar.css b/themes/kiln/waybar.css new file mode 100644 index 0000000..8940ee8 --- /dev/null +++ b/themes/kiln/waybar.css @@ -0,0 +1,192 @@ +/* + * Kiln — Waybar whole-swap (themes//waybar.css). + * + * A theme waybar.css replaces the ENTIRE generated stylesheet and is read + * raw (no palette is prepended), so this file MUST define its own colors. + * Identity: "the workbench" — ONE continuous floating island, a solid + * worktop plank spanning the screen width minus margins, with a faint + * copper edge-glow border. No pills, no edge-to-edge strip: every module + * — including the tray — sits directly on the one plank, seamless. + * Companion: waybar.jsonc. + */ + +@define-color base #1D1815; +@define-color mantle #151110; +@define-color surface #2C241E; +@define-color overlay #41362D; +@define-color text #EADFD3; +@define-color subtext #B5A695; +@define-color muted #77685A; +@define-color accent #D68C5C; +@define-color accentAlt #C8A94E; +@define-color good #A0B36A; +@define-color warn #E0A458; +@define-color bad #E26D5A; + +/* NB: this `*` reset reaches the SNI tray menus Waybar hosts too (its + stylesheet applies process-wide, at a priority user gtk.css cannot + out-rank). The menu block right below undoes the damage — keep the two + in sync. Do NOT scope `*` to window#waybar instead: the id's + specificity would beat the class rules below (the plank) and wreck the + bar. */ +* { + /* Mono Nerd face for status glyphs (tight right bearings on the + proportional Symbols face make icon+percentage collide). */ + font-family: "CaskaydiaCove Nerd Font", "Symbols Nerd Font Mono"; + font-size: 13px; + font-weight: 500; + border: none; + border-radius: 0; + min-height: 0; +} + +/* ── Tray menus (nm-applet & co live in Waybar's process) ───────────── + Undo the `*` reset for them: same stylesheet, higher specificity. + Arrows/checks are CSS-sized nodes — min-height 0 makes them invisible; + separators die the same way; the bar's mono face reads wrong in text + menus. */ +menu, menu * { font-family: "Inter", sans-serif; } +menu menuitem arrow { min-width: 16px; min-height: 16px; } +menu check, menu radio { min-width: 14px; min-height: 14px; } +menu separator { + min-height: 1px; + margin: 5px 0; + background: alpha(@text, 0.15); +} + +/* The plank itself — one solid worktop spanning the island, a faint + ember-copper edge-glow lifting it off the wallpaper. */ +window#waybar { + background: alpha(@base, 0.92); + border: 1px solid alpha(@accent, 0.25); + border-radius: 8px; + color: @text; +} + +.modules-left, +.modules-center, +.modules-right { + background: transparent; + padding: 0 6px; + margin: 0; +} + +/* Every module sits ON the plank: transparent, so nothing boxes the tray + off from the status icons — the seamless-cluster requirement. */ +#custom-nomarchy, +#clock, +#custom-recording, +#custom-updates, +#custom-doctor, +#idle_inhibitor, +#custom-nightlight, +#custom-airplane, +#language, +#custom-vpn, +#pulseaudio, +#battery, +#custom-powerprofile, +#tray, +#custom-notification, +#custom-powermenu { + background: transparent; + color: alpha(@text, 0.9); + padding: 0 8px; + margin: 0; +} + +/* ── Launcher — the ember-copper Nomarchy mark opens the plank ──────── + The mark lives at U+F000 in the dedicated "Nomarchy" font; pin the + family or the Nerd Font's glass glyph at the same codepoint wins. */ +#custom-nomarchy { + color: @accent; + font-family: Nomarchy; + font-size: 18px; + padding: 0 12px 0 14px; +} +#custom-nomarchy:hover { color: @accentAlt; } + +/* ── Clock — unified time · date ─────────────────────────────────────*/ +#clock { + color: @text; + font-weight: 600; + padding-left: 4px; +} + +/* ── Workspaces — dots that fire to an ember pill when active ─────────*/ +#workspaces { padding: 0 2px; } + +#workspaces button { + color: @muted; + padding: 0 9px; + margin: 3px 1px; + border-radius: 6px; + transition: color 0.2s ease, background 0.2s ease; +} +#workspaces button:hover { + color: @text; + background: alpha(@overlay, 0.6); +} +#workspaces button.active { + color: @base; + background: @accent; + border-radius: 6px; +} +#workspaces button.urgent { + color: @base; + background: @bad; + border-radius: 6px; +} + +/* ── Status semantics (neutral until a state fires) ──────────────────*/ +#custom-recording.recording { color: @bad; } +#custom-updates.available { color: @accent; } +#custom-doctor { color: @bad; } +#idle_inhibitor.activated { color: @warn; } +#custom-nightlight.on { color: @warn; } +#custom-airplane.on { color: @warn; } +#custom-vpn.on { color: @good; } +#pulseaudio.muted { color: @muted; } + +#battery.charging { color: @good; } +#battery.warning:not(.charging) { color: @warn; } +#battery.critical:not(.charging) { color: @bad; } + +/* Icon-only status modules carry no text, so they don't get the 13pt + Pango icon span the icon+text modules (volume/battery/language) use — + bump their font-size to match, or these glyphs read noticeably smaller + than their neighbours. */ +#custom-recording, +#custom-updates, +#custom-doctor, +#custom-nightlight, +#custom-airplane, +#custom-vpn, +#custom-notification { font-size: 17px; } +/* Speedometer + caffeine cup render small in their em box — a touch more. */ +#custom-powerprofile, +#idle_inhibitor { font-size: 18px; } + +#custom-notification.notification { color: @accent; } +#custom-notification.dnd-none, +#custom-notification.dnd-notification, +#custom-notification.inhibited-none, +#custom-notification.inhibited-notification { color: @muted; } + +/* Tray shares the plank — same transparent background, its own modest + padding so nm-applet & friends breathe with the status icons. */ +#tray { padding: 0 6px; } +#tray > .passive { -gtk-icon-effect: dim; } +#tray > .needs-attention { -gtk-icon-effect: highlight; } + +/* Power button closes the plank on the right; warms to alert on hover. */ +#custom-powermenu { color: @subtext; padding: 0 12px 0 8px; } +#custom-powermenu:hover { color: @bad; } + +/* ── Tooltips — solid clay, ember-copper edge ────────────────────────*/ +tooltip { + background: alpha(@mantle, 0.96); + border: 1px solid alpha(@accent, 0.35); + border-radius: 8px; +} +tooltip label { color: @text; } diff --git a/themes/kiln/waybar.jsonc b/themes/kiln/waybar.jsonc new file mode 100644 index 0000000..32133c5 --- /dev/null +++ b/themes/kiln/waybar.jsonc @@ -0,0 +1,183 @@ +{ + "margin-top": 6, + "margin-left": 12, + "margin-right": 12, + "margin-bottom": 0, + "height": 38, + "layer": "bottom", + "position": "top", + "spacing": 4, + "reload_style_on_change": true, + "modules-left": [ + "custom/nomarchy", + "clock" + ], + "modules-center": [ + "hyprland/workspaces" + ], + "modules-right": [ + "custom/recording", + "custom/updates", + "custom/doctor", + "idle_inhibitor", + "custom/nightlight", + "hyprland/language", + "custom/vpn", + "custom/airplane", + "pulseaudio", + "battery", + "custom/powerprofile", + "tray", + "custom/notification", + "custom/powermenu" + ], + "custom/nomarchy": { + "interval": "once", + "format": "", + "on-click": "nomarchy-menu", + "tooltip-format": "Nomarchy menu" + }, + "clock": { + "format": "{:%H:%M · %a %d %b}", + "on-click": "nomarchy-calendar", + "tooltip": true, + "tooltip-format": "{:%A, %d %B %Y\n%Z (UTC%z)}" + }, + "hyprland/workspaces": { + "disable-scroll": true, + "all-outputs": true, + "on-click": "activate", + "on-scroll-up": "hyprctl dispatch workspace r+1", + "on-scroll-down": "hyprctl dispatch workspace r-1" + }, + "custom/recording": { + "return-type": "json", + "interval": 10, + "signal": 8, + "exec": "nomarchy-record status", + "on-click": "nomarchy-record stop" + }, + "custom/updates": { + "return-type": "json", + "interval": 1800, + "signal": 9, + "exec": "nomarchy-updates status", + "on-click": "nomarchy-updates upgrade-window" + }, + "custom/doctor": { + "return-type": "json", + "format": "{}", + "interval": 300, + "signal": 10, + "exec": "nomarchy-doctor-status", + "on-click": "nomarchy-menu doctor" + }, + "idle_inhibitor": { + "format": "{icon}", + "format-icons": { + "activated": " 󰅶 ", + "deactivated": " 󰾪 " + } + }, + "custom/nightlight": { + "return-type": "json", + "interval": 3, + "exec": "nomarchy-nightlight status", + "on-click": "nomarchy-nightlight toggle" + }, + "hyprland/language": { + "format": "󰌌 {short}", + "tooltip": false + }, + "custom/vpn": { + "return-type": "json", + "interval": 5, + "exec": "nomarchy-vpn-status", + "on-click": "nomarchy-vpn" + }, + "pulseaudio": { + "scroll-step": 5, + "format": "{icon}{volume}%", + "format-bluetooth": "{icon} {volume}%", + "format-bluetooth-muted": " {icon}", + "format-muted": "muted", + "format-icons": { + "headphone": " ", + "hands-free": " ", + "headset": " ", + "phone": " ", + "portable": " ", + "car": " ", + "default": [ + " ", + " ", + " " + ] + }, + "on-click": "wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle", + "on-click-right": "pwvucontrol", + "tooltip-format": "{desc} | {volume}%" + }, + "battery": { + "interval": 30, + "states": { + "warning": 25, + "critical": 10 + }, + "format": "{icon}{capacity}%", + "format-charging": "{capacity}%", + "format-plugged": "{capacity}%", + "tooltip-format-plugged": "Plugged in, not charging — held at {capacity}% by the battery charge cap\nCharging resumes ~10% below the cap · click to adjust", + "format-icons": [ + " ", + " ", + " ", + " ", + " " + ], + "on-click": "nomarchy-menu powermgmt", + "tooltip-format": "Battery status" + }, + "custom/powerprofile": { + "return-type": "json", + "interval": 5, + "exec": "nomarchy-powerprofile-status", + "on-click": "nomarchy-menu powermgmt" + }, + "tray": { + "icon-size": 15, + "spacing": 10 + }, + "custom/notification": { + "format": "{icon}", + "return-type": "json", + "exec": "swaync-client -swb", + "exec-if": "which swaync-client", + "escape": true, + "tooltip": true, + "on-click": "swaync-client -t -sw", + "on-click-right": "swaync-client -d -sw", + "format-icons": { + "none": "󰂜", + "notification": "󰂚", + "dnd-none": "󰂛", + "dnd-notification": "󰂛", + "inhibited-none": "󰂛", + "inhibited-notification": "󰂛", + "dnd-inhibited-none": "󰂛", + "dnd-inhibited-notification": "󰂛" + } + }, + "custom/powermenu": { + "format": "", + "on-click": "nomarchy-menu power", + "tooltip": false + }, + "custom/airplane": { + "return-type": "json", + "interval": 5, + "signal": 11, + "exec": "nomarchy-airplane status", + "on-click": "nomarchy-airplane toggle" + } +}