diff options
| author | Danilo M. <danix@danix.xyz> | 2026-09-11 17:20:50 +0200 |
|---|---|---|
| committer | Danilo M. <danix@danix.xyz> | 2026-09-11 17:20:50 +0200 |
| commit | 7b55910a786c7652ac80a576399ebd9f81a8ac72 (patch) | |
| tree | 4adaedb0f0ac5003ecc0e19093a2cb5871b18deb /palette/roles-macchiato.conf | |
| parent | c7cb9dad4e782ee0ff99773c3607ec3b7792c723 (diff) | |
| download | unified-desktop-theme-7b55910a786c7652ac80a576399ebd9f81a8ac72.tar.gz unified-desktop-theme-7b55910a786c7652ac80a576399ebd9f81a8ac72.zip | |
feat(palette): generate every themed config from one scheme
Colours were written down five times: rofi's palette.rasi, the waybar theme,
the kitty theme, the conky and dunst templates, and a MACCHIATO dict inside
udt-accent. Changing scheme meant finding all five, and they had already
drifted: the active waybar theme was Macchiato while theme.css next to it was
Mocha, and nothing imported the latter.
Now a scheme is two files. palette/<scheme>.conf holds the colours under the
scheme's own names, and palette/roles-<scheme>.conf says what each is for.
palette/roles.conf is one `scheme =` line selecting the pair. bin/udt-palette
renders that into each consumer's syntax and install.sh runs it first.
The role map is per-scheme rather than shared because the palettes are
genuinely different shapes: Nord has no `base`, Dracula no `surface0`, and
forcing Catppuccin's names onto them would have meant either renaming their
colours or inventing values. A role names a palette colour with two optional
modifiers, `name/75` for alpha and `name*50` for brightness. The second exists
because GTK's shade() has no palette name to point at.
Ships macchiato, tokyo-night, nord and dracula. --selftest resolves every role
in every scheme and asserts they define the same set, so a scheme that cannot
satisfy a consumer fails at install rather than when someone switches to it.
Verified against the live configs: all 46 waybar colours resolve identically to
the previously active theme including its alpha() and shade() derivations, the
kitty theme is colour-for-colour identical, and the rofi palette has the same
26 values. Generated files are gitignored; switching scheme and switching back
reproduces the originals.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_015gbjA2bmswN8jyPDKzrvqe
Diffstat (limited to 'palette/roles-macchiato.conf')
| -rw-r--r-- | palette/roles-macchiato.conf | 115 |
1 files changed, 115 insertions, 0 deletions
diff --git a/palette/roles-macchiato.conf b/palette/roles-macchiato.conf new file mode 100644 index 0000000..0a34f03 --- /dev/null +++ b/palette/roles-macchiato.conf @@ -0,0 +1,115 @@ +# Role assignments for Catppuccin Macchiato. +# Copyright (C) 2026 Danilo M. <danix@danix.xyz> +# Licensed under the GNU General Public License v2 only. +# +# Every role in here names a colour from palette/macchiato.conf. See +# palette/roles.conf for what the roles mean and how to select a scheme. + +[ui] +# Surfaces, darkest to lightest. Most consumers only need the first three. +bg = base +bg_alt = mantle +bg_deep = crust +surface = surface0 +surface_alt = surface1 +border = surface1 + +# Text, brightest to dimmest. +fg = text +fg_dim = subtext0 +fg_faint = overlay0 + +# The one colour that tracks the wallpaper. udt-accent overrides this per +# wallpaper for rofi, dunst, Hyprland and Firefox; the value here is the +# fallback, and what the consumers that do not track it sit on permanently. +accent = lavender + +[state] +# Notification urgency, waybar module states, conky warnings. +warning = yellow +critical = red +success = green +info = teal + +[waybar] +# Bar chrome. These were already role names in ~/.config/waybar/theme.css. +main_br = subtext0 +main_bg = crust +main_fg = text +hover_bg = base +hover_fg = text/75 +outline = crust*50 + +# Per-module backgrounds. Alternating depths, not semantic: the bar reads as +# stripes, so neighbouring modules differ. +workspaces = mantle +temperature = mantle +memory = base +cpu = surface0 +time = surface0 +date = base +tray = mantle +volume = mantle +backlight = base +battery = surface0 +charging = green + +[conky] +# conky indexes colours by number. The names say what each number draws. +heading = lavender +label = subtext0 +rule = surface1 +value = teal +highlight = mauve +ok = green +body = text +body_outline = surface1 +body_shade = mantle + +[terminal] +# The 16 ANSI slots, plus kitty's own chrome. normal and bright are separate +# because a scheme may offer distinct pairs; Catppuccin and Dracula do not, so +# these name the same colours twice. +cursor = rosewater +selection_bg = rosewater +selection_fg = base +url = rosewater +tab_active_bg = mauve +tab_active_fg = crust +tab_inactive_bg = mantle +tab_inactive_fg = text +border_active = lavender +border_inactive = overlay0 + +black = surface1 +red = red +green = green +yellow = yellow +blue = blue +magenta = pink +cyan = teal +white = subtext1 + +bright_black = surface2 +bright_red = red +bright_green = green +bright_yellow = yellow +bright_blue = blue +bright_magenta = pink +bright_cyan = teal +bright_white = subtext0 + +# kitty extras: marks, scrollbar, bell, tab bar ground. +mark1 = lavender +mark2 = mauve +mark3 = sapphire +scrollbar_handle = overlay2 +scrollbar_track = surface1 +bell_border = yellow +tab_bar_bg = crust + +[accents] +# The hues udt-accent snaps a wallpaper to. Near-neutral tints (rosewater, +# flamingo) and near-duplicate hues (maroon, sapphire) are left out so the +# snapping has one candidate per region of the wheel. +snap = pink mauve lavender red peach yellow green teal sky blue |
