aboutsummaryrefslogtreecommitdiffstats
path: root/palette
diff options
context:
space:
mode:
authorDanilo M. <danix@danix.xyz>2026-09-11 18:45:15 +0200
committerDanilo M. <danix@danix.xyz>2026-09-11 18:45:15 +0200
commitee39bd927e056c2dae9d61230a95a05715b3a8c6 (patch)
tree5539cb2dba13acb2f2b8f607d691f9b9a1dbd858 /palette
parenta77f24d657a6091022754adb1b30750748132216 (diff)
downloadunified-desktop-theme-ee39bd927e056c2dae9d61230a95a05715b3a8c6.tar.gz
unified-desktop-theme-ee39bd927e056c2dae9d61230a95a05715b3a8c6.zip
feat(palette): add five more schemes, and parse-check them all
Adds Catppuccin Frappe and Mocha, which share Macchiato's colour names so their role maps are the same mapping against different values, and Material Ocean, Palenight and Darker, which bring their own names and their own maps. Nine schemes now, all dark. Material ships one accent per hue and three greys where the roles want five depths, so each Material palette carries four interpolated shades, marked as not upstream, and its bright_* terminal slots name the same colours as the normal ones. The selftest now renders every scheme to a temp directory and has rofi parse every theme, not just check that roles resolve. Resolving was never the property that mattered: the Tokyo Night breakage resolved fine and still emitted a palette the themes could not use. Verified the check fails when a name is removed. Catppuccin Latte is deliberately absent. It is light, and that is not a role remap: homepage is pinned theme: dark and the generated card overrides target its dark-mode class. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_015gbjA2bmswN8jyPDKzrvqe
Diffstat (limited to 'palette')
-rw-r--r--palette/frappe.conf39
-rw-r--r--palette/material-darker.conf30
-rw-r--r--palette/material-ocean.conf32
-rw-r--r--palette/material-palenight.conf30
-rw-r--r--palette/mocha.conf39
-rw-r--r--palette/roles-frappe.conf122
-rw-r--r--palette/roles-material-darker.conf108
-rw-r--r--palette/roles-material-ocean.conf108
-rw-r--r--palette/roles-material-palenight.conf108
-rw-r--r--palette/roles-mocha.conf122
10 files changed, 738 insertions, 0 deletions
diff --git a/palette/frappe.conf b/palette/frappe.conf
new file mode 100644
index 0000000..d9bb86b
--- /dev/null
+++ b/palette/frappe.conf
@@ -0,0 +1,39 @@
+# Catppuccin Frappe.
+# Copyright (C) 2026 Danilo M. <danix@danix.xyz>
+# Licensed under the GNU General Public License v2 only.
+#
+# Source: https://github.com/catppuccin/palette
+#
+# The warmest of the three dark Catppuccin flavours, and the lightest: its base
+# sits a shade above Macchiato's.
+
+rosewater = #f2d5cf
+flamingo = #eebebe
+pink = #f4b8e4
+mauve = #ca9ee6
+red = #e78284
+maroon = #ea999c
+peach = #ef9f76
+yellow = #e5c890
+green = #a6d189
+teal = #81c8be
+sky = #99d1db
+sapphire = #85c1dc
+blue = #8caaee
+lavender = #babbf1
+
+text = #c6d0f5
+subtext1 = #b5bfe2
+subtext0 = #a5adce
+
+overlay2 = #949cbb
+overlay1 = #838ba7
+overlay0 = #737994
+
+surface2 = #626880
+surface1 = #51576d
+surface0 = #414559
+
+base = #303446
+mantle = #292c3c
+crust = #232634
diff --git a/palette/material-darker.conf b/palette/material-darker.conf
new file mode 100644
index 0000000..66e3720
--- /dev/null
+++ b/palette/material-darker.conf
@@ -0,0 +1,30 @@
+# Material Darker.
+# Copyright (C) 2026 Danilo M. <danix@danix.xyz>
+# Licensed under the GNU General Public License v2 only.
+#
+# Source: https://github.com/material-theme/vsc-material-theme
+#
+# The neutral-grey Material variant, with no blue or violet cast to the
+# background. The darkest of the three shipped here.
+
+background = #212121
+surface = #2f2f2f
+selection = #404040
+foreground = #eeffff
+comment = #616161
+
+red = #ff5370
+orange = #f78c6c
+yellow = #ffcb6b
+green = #c3e88d
+cyan = #89ddff
+blue = #82aaff
+purple = #c792ea
+violet = #bb80b3
+brown = #ab7967
+
+# Interpolated, not upstream. See the note in material-ocean.conf.
+deep = #171717
+mid = #262626
+mid_high = #4a4a4a
+light = #8a8a8a
diff --git a/palette/material-ocean.conf b/palette/material-ocean.conf
new file mode 100644
index 0000000..da196f7
--- /dev/null
+++ b/palette/material-ocean.conf
@@ -0,0 +1,32 @@
+# Material Ocean.
+# Copyright (C) 2026 Danilo M. <danix@danix.xyz>
+# Licensed under the GNU General Public License v2 only.
+#
+# Source: https://github.com/material-theme/vsc-material-theme
+#
+# The deepest blue of the Material family. Material ships a small accent set
+# and three or four greys, so the surface names below are upstream's own
+# (background, surface, selection) plus two interpolated depths, marked.
+
+background = #0f111a
+surface = #1f2233
+selection = #1f2233
+foreground = #a6accd
+comment = #4b526d
+
+red = #ff5370
+orange = #f78c6c
+yellow = #ffcb6b
+green = #c3e88d
+cyan = #89ddff
+blue = #82aaff
+purple = #c792ea
+violet = #bb80b3
+brown = #ab7967
+
+# Interpolated, not upstream: Material gives three greys where the roles want
+# five depths, so these fill the gaps between background and comment.
+deep = #090b10
+mid = #171925
+mid_high = #2e3446
+light = #717cb4
diff --git a/palette/material-palenight.conf b/palette/material-palenight.conf
new file mode 100644
index 0000000..dd95cf3
--- /dev/null
+++ b/palette/material-palenight.conf
@@ -0,0 +1,30 @@
+# Material Palenight.
+# Copyright (C) 2026 Danilo M. <danix@danix.xyz>
+# Licensed under the GNU General Public License v2 only.
+#
+# Source: https://github.com/material-theme/vsc-material-theme
+#
+# The violet-leaning Material variant. Same accent set as Ocean on a warmer,
+# lighter ground.
+
+background = #292d3e
+surface = #34324a
+selection = #444267
+foreground = #a6accd
+comment = #676e95
+
+red = #ff5370
+orange = #f78c6c
+yellow = #ffcb6b
+green = #c3e88d
+cyan = #89ddff
+blue = #82aaff
+purple = #c792ea
+violet = #bb80b3
+brown = #ab7967
+
+# Interpolated, not upstream. See the note in material-ocean.conf.
+deep = #202331
+mid = #2f3347
+mid_high = #3e4361
+light = #8f96b3
diff --git a/palette/mocha.conf b/palette/mocha.conf
new file mode 100644
index 0000000..07a7ad5
--- /dev/null
+++ b/palette/mocha.conf
@@ -0,0 +1,39 @@
+# Catppuccin Mocha.
+# Copyright (C) 2026 Danilo M. <danix@danix.xyz>
+# Licensed under the GNU General Public License v2 only.
+#
+# Source: https://github.com/catppuccin/palette
+#
+# The darkest Catppuccin flavour, and the one the waybar config used to carry
+# in an unimported file before the palette was unified.
+
+rosewater = #f5e0dc
+flamingo = #f2cdcd
+pink = #f5c2e7
+mauve = #cba6f7
+red = #f38ba8
+maroon = #eba0ac
+peach = #fab387
+yellow = #f9e2af
+green = #a6e3a1
+teal = #94e2d5
+sky = #89dceb
+sapphire = #74c7ec
+blue = #89b4fa
+lavender = #b4befe
+
+text = #cdd6f4
+subtext1 = #bac2de
+subtext0 = #a6adc8
+
+overlay2 = #9399b2
+overlay1 = #7f849c
+overlay0 = #6c7086
+
+surface2 = #585b70
+surface1 = #45475a
+surface0 = #313244
+
+base = #1e1e2e
+mantle = #181825
+crust = #11111b
diff --git a/palette/roles-frappe.conf b/palette/roles-frappe.conf
new file mode 100644
index 0000000..4ae5ea4
--- /dev/null
+++ b/palette/roles-frappe.conf
@@ -0,0 +1,122 @@
+# Role assignments for Catppuccin Frappe.
+# 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/frappe.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
+
+# Intermediate greys, for consumers that want a full ramp rather than
+# three depths. homepage's --color-50..900 is the only one so far.
+fg_bright = subtext1
+mid_high = overlay2
+mid_low = overlay1
+surface_high = surface2
+
+# 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
diff --git a/palette/roles-material-darker.conf b/palette/roles-material-darker.conf
new file mode 100644
index 0000000..0db4a58
--- /dev/null
+++ b/palette/roles-material-darker.conf
@@ -0,0 +1,108 @@
+# Role assignments for Material Darker.
+# Copyright (C) 2026 Danilo M. <danix@danix.xyz>
+# Licensed under the GNU General Public License v2 only.
+#
+# Material has one accent per hue and no bright variants, so the bright_* slots
+# name the same colours as the normal ones. Its palette carries no pink, so
+# purple fills the magenta slot.
+
+[ui]
+bg = background
+bg_alt = mid
+bg_deep = deep
+surface = surface
+surface_alt = selection
+border = mid_high
+
+fg = foreground
+fg_dim = light
+fg_faint = comment
+
+accent = cyan
+
+[state]
+warning = yellow
+critical = red
+success = green
+info = cyan
+
+[waybar]
+main_br = light
+main_bg = deep
+main_fg = foreground
+hover_bg = background
+hover_fg = foreground/75
+outline = deep*50
+
+workspaces = mid
+temperature = mid
+memory = background
+cpu = surface
+time = surface
+date = background
+tray = mid
+volume = mid
+backlight = background
+battery = surface
+charging = green
+
+[conky]
+heading = cyan
+label = light
+rule = mid_high
+value = blue
+highlight = purple
+ok = green
+body = foreground
+body_outline = mid_high
+body_shade = deep
+
+[terminal]
+cursor = orange
+selection_bg = selection
+selection_fg = foreground
+url = cyan
+tab_active_bg = purple
+tab_active_fg = background
+tab_inactive_bg = mid
+tab_inactive_fg = foreground
+border_active = cyan
+border_inactive = comment
+
+black = selection
+red = red
+green = green
+yellow = yellow
+blue = blue
+magenta = purple
+cyan = cyan
+white = foreground
+
+bright_black = comment
+bright_red = red
+bright_green = green
+bright_yellow = orange
+bright_blue = blue
+bright_magenta = violet
+bright_cyan = cyan
+bright_white = foreground
+
+# Intermediate greys, for consumers that want a full ramp rather than
+# three depths. homepage's --color-50..900 is the only one so far.
+fg_bright = foreground
+mid_high = light
+mid_low = comment
+surface_high = mid_high
+
+# kitty extras: marks, scrollbar, bell, tab bar ground.
+mark1 = cyan
+mark2 = purple
+mark3 = blue
+scrollbar_handle = comment
+scrollbar_track = surface
+bell_border = yellow
+tab_bar_bg = deep
+
+[accents]
+# Material ships one accent per hue, seven usable.
+snap = purple violet blue cyan green yellow orange red
diff --git a/palette/roles-material-ocean.conf b/palette/roles-material-ocean.conf
new file mode 100644
index 0000000..6291123
--- /dev/null
+++ b/palette/roles-material-ocean.conf
@@ -0,0 +1,108 @@
+# Role assignments for Material Ocean.
+# Copyright (C) 2026 Danilo M. <danix@danix.xyz>
+# Licensed under the GNU General Public License v2 only.
+#
+# Material has one accent per hue and no bright variants, so the bright_* slots
+# name the same colours as the normal ones. Its palette carries no pink, so
+# purple fills the magenta slot.
+
+[ui]
+bg = background
+bg_alt = mid
+bg_deep = deep
+surface = surface
+surface_alt = selection
+border = mid_high
+
+fg = foreground
+fg_dim = light
+fg_faint = comment
+
+accent = cyan
+
+[state]
+warning = yellow
+critical = red
+success = green
+info = cyan
+
+[waybar]
+main_br = light
+main_bg = deep
+main_fg = foreground
+hover_bg = background
+hover_fg = foreground/75
+outline = deep*50
+
+workspaces = mid
+temperature = mid
+memory = background
+cpu = surface
+time = surface
+date = background
+tray = mid
+volume = mid
+backlight = background
+battery = surface
+charging = green
+
+[conky]
+heading = cyan
+label = light
+rule = mid_high
+value = blue
+highlight = purple
+ok = green
+body = foreground
+body_outline = mid_high
+body_shade = deep
+
+[terminal]
+cursor = orange
+selection_bg = selection
+selection_fg = foreground
+url = cyan
+tab_active_bg = purple
+tab_active_fg = background
+tab_inactive_bg = mid
+tab_inactive_fg = foreground
+border_active = cyan
+border_inactive = comment
+
+black = selection
+red = red
+green = green
+yellow = yellow
+blue = blue
+magenta = purple
+cyan = cyan
+white = foreground
+
+bright_black = comment
+bright_red = red
+bright_green = green
+bright_yellow = orange
+bright_blue = blue
+bright_magenta = violet
+bright_cyan = cyan
+bright_white = foreground
+
+# Intermediate greys, for consumers that want a full ramp rather than
+# three depths. homepage's --color-50..900 is the only one so far.
+fg_bright = foreground
+mid_high = light
+mid_low = comment
+surface_high = mid_high
+
+# kitty extras: marks, scrollbar, bell, tab bar ground.
+mark1 = cyan
+mark2 = purple
+mark3 = blue
+scrollbar_handle = comment
+scrollbar_track = surface
+bell_border = yellow
+tab_bar_bg = deep
+
+[accents]
+# Material ships one accent per hue, seven usable.
+snap = purple violet blue cyan green yellow orange red
diff --git a/palette/roles-material-palenight.conf b/palette/roles-material-palenight.conf
new file mode 100644
index 0000000..e09d54b
--- /dev/null
+++ b/palette/roles-material-palenight.conf
@@ -0,0 +1,108 @@
+# Role assignments for Material Palenight.
+# Copyright (C) 2026 Danilo M. <danix@danix.xyz>
+# Licensed under the GNU General Public License v2 only.
+#
+# Material has one accent per hue and no bright variants, so the bright_* slots
+# name the same colours as the normal ones. Its palette carries no pink, so
+# purple fills the magenta slot.
+
+[ui]
+bg = background
+bg_alt = mid
+bg_deep = deep
+surface = surface
+surface_alt = selection
+border = mid_high
+
+fg = foreground
+fg_dim = light
+fg_faint = comment
+
+accent = cyan
+
+[state]
+warning = yellow
+critical = red
+success = green
+info = cyan
+
+[waybar]
+main_br = light
+main_bg = deep
+main_fg = foreground
+hover_bg = background
+hover_fg = foreground/75
+outline = deep*50
+
+workspaces = mid
+temperature = mid
+memory = background
+cpu = surface
+time = surface
+date = background
+tray = mid
+volume = mid
+backlight = background
+battery = surface
+charging = green
+
+[conky]
+heading = cyan
+label = light
+rule = mid_high
+value = blue
+highlight = purple
+ok = green
+body = foreground
+body_outline = mid_high
+body_shade = deep
+
+[terminal]
+cursor = orange
+selection_bg = selection
+selection_fg = foreground
+url = cyan
+tab_active_bg = purple
+tab_active_fg = background
+tab_inactive_bg = mid
+tab_inactive_fg = foreground
+border_active = cyan
+border_inactive = comment
+
+black = selection
+red = red
+green = green
+yellow = yellow
+blue = blue
+magenta = purple
+cyan = cyan
+white = foreground
+
+bright_black = comment
+bright_red = red
+bright_green = green
+bright_yellow = orange
+bright_blue = blue
+bright_magenta = violet
+bright_cyan = cyan
+bright_white = foreground
+
+# Intermediate greys, for consumers that want a full ramp rather than
+# three depths. homepage's --color-50..900 is the only one so far.
+fg_bright = foreground
+mid_high = light
+mid_low = comment
+surface_high = mid_high
+
+# kitty extras: marks, scrollbar, bell, tab bar ground.
+mark1 = cyan
+mark2 = purple
+mark3 = blue
+scrollbar_handle = comment
+scrollbar_track = surface
+bell_border = yellow
+tab_bar_bg = deep
+
+[accents]
+# Material ships one accent per hue, seven usable.
+snap = purple violet blue cyan green yellow orange red
diff --git a/palette/roles-mocha.conf b/palette/roles-mocha.conf
new file mode 100644
index 0000000..8d5c509
--- /dev/null
+++ b/palette/roles-mocha.conf
@@ -0,0 +1,122 @@
+# Role assignments for Catppuccin Mocha.
+# 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/mocha.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
+
+# Intermediate greys, for consumers that want a full ramp rather than
+# three depths. homepage's --color-50..900 is the only one so far.
+fg_bright = subtext1
+mid_high = overlay2
+mid_low = overlay1
+surface_high = surface2
+
+# 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