aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--AGENTS.md16
-rwxr-xr-xbin/udt-palette46
-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
-rw-r--r--templates/conky.conf18
-rw-r--r--templates/dunstrc16
-rw-r--r--templates/homepage/custom.css36
15 files changed, 828 insertions, 42 deletions
diff --git a/AGENTS.md b/AGENTS.md
index 4632623..b022a38 100644
--- a/AGENTS.md
+++ b/AGENTS.md
@@ -27,8 +27,13 @@ state, so switching does not dirty the working tree and two machines sharing
this repo can differ. It is the one exception to this repo holding the
canonical copy of everything.
-Four schemes ship: `macchiato`, `tokyo-night`, `nord`, `dracula`. Switching is
-one line in `~/.config/udt/roles.conf` plus `./install.sh`.
+Nine schemes ship: `macchiato`, `frappe`, `mocha`, `tokyo-night`, `nord`, `dracula`,
+`material-ocean`, `material-palenight`, `material-darker`. Switching is one line in
+`~/.config/udt/roles.conf` plus `./install.sh`.
+
+All nine are dark. A light scheme is not a role remap: homepage is pinned
+`theme: dark` and its generated card overrides target the dark-mode class, and
+`install.sh` would need to flip that setting too.
Generated files are gitignored, because tracking them would turn every scheme
switch into a diff. Editing one is pointless: the next install overwrites it.
@@ -54,8 +59,11 @@ palette name with two optional modifiers, `name/75` for 75% alpha and
is darker than the darkest colour any of these schemes ships.
**Adding a scheme means adding two files, never editing a consumer.** Every
-scheme must define the same role set; `udt-palette --selftest` fails if one
-drifts, which is what stops a switch from breaking a config nobody looked at.
+scheme must define the same role set, and `udt-palette --selftest` enforces
+that, then has rofi parse every theme under every scheme. Both checks exist
+because both failures shipped: a role set can drift silently, and a palette
+that resolves can still emit a theme rofi refuses to parse, which stops every
+launcher on the desktop.
## The accent
diff --git a/bin/udt-palette b/bin/udt-palette
index 1df0c4f..18dc0b1 100755
--- a/bin/udt-palette
+++ b/bin/udt-palette
@@ -417,8 +417,8 @@ TARGETS = [
]
-def generate(roles_path, out_dir):
- scheme, palette, res, snap_names = load(roles_path)
+def generate(roles_path, out_dir, scheme=None):
+ scheme, palette, res, snap_names = load(roles_path, scheme=scheme)
written = []
for target, fn, template in TARGETS:
dest = out_dir / target
@@ -437,6 +437,44 @@ def generate(roles_path, out_dir):
return scheme, written
+def check_rofi_parses(scheme):
+ """Render `scheme` to a temp dir and have rofi parse every theme.
+
+ The role checks below prove a scheme resolves, not that what it emits is
+ valid. A palette missing a name the themes reference parses as a broken
+ theme and every launcher stops opening, which is how exactly that bug
+ shipped once. rofi needs no display for -dump-theme.
+ """
+ import shutil
+ import subprocess
+ import tempfile
+
+ if not shutil.which("rofi"):
+ return None
+
+ with tempfile.TemporaryDirectory() as tmp:
+ out = Path(tmp)
+ generate(None, out, scheme=scheme)
+ udt = out / "rofi" / "udt"
+ # The themes @import siblings, so they need the whole directory.
+ for extra in (REPO / "rofi" / "udt").glob("*.rasi"):
+ if not (udt / extra.name).exists():
+ shutil.copy(extra, udt / extra.name)
+ # accent.rasi is generated per wallpaper; seed it so themes resolve.
+ (udt / "accent.rasi").write_text("* { accent: #ffffffff; }\n")
+
+ for theme in sorted(udt.glob("*.rasi")):
+ if theme.name in ("palette.rasi", "accent.rasi", "common.rasi"):
+ continue
+ proc = subprocess.run(
+ ["rofi", "-no-config", "-theme", str(theme), "-dump-theme"],
+ capture_output=True, text=True)
+ if "Failed to parse" in proc.stderr:
+ raise AssertionError(
+ f"{scheme}: rofi cannot parse {theme.name}\n{proc.stderr.strip()}")
+ return True
+
+
def selftest():
# Every shipped scheme must satisfy every role, or switching to it breaks
# at install time. load() raises on any role the palette cannot supply.
@@ -449,7 +487,9 @@ def selftest():
assert res["bg"] != res["fg"], f"{scheme}: bg and fg are the same colour"
assert len(snap) >= 5, f"{scheme}: only {len(snap)} snap candidates"
seen[scheme] = set(res)
- print(f" {scheme}: {len(res)} roles, {len(snap)} accents")
+ parsed = check_rofi_parses(scheme)
+ note = "" if parsed else " (rofi not installed, parse unchecked)"
+ print(f" {scheme}: {len(res)} roles, {len(snap)} accents{note}")
# Every scheme must define the SAME roles: a generator asks for a role by
# name, so one scheme missing it would fail only once that scheme was
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
diff --git a/templates/conky.conf b/templates/conky.conf
index 739cc41..5711cf2 100644
--- a/templates/conky.conf
+++ b/templates/conky.conf
@@ -5,17 +5,17 @@ conky.config={
mpd_host = '172.16.34.5',
mpd_port = 6600,
background=true,
- color1='#88c0d0',
- color2='#d8dee9',
- color3='#4c566a',
- color4='#8fbcbb',
- color5='#b48ead',
- color6='#a3be8c',
+ color1='#89ddff',
+ color2='#717cb4',
+ color3='#2e3446',
+ color4='#82aaff',
+ color5='#c792ea',
+ color6='#c3e88d',
pad_percents=0,
cpu_avg_samples=4,
- default_color='#eceff4',
- default_outline_color='#4c566a',
- default_shade_color='#3b4252',
+ default_color='#a6accd',
+ default_outline_color='#2e3446',
+ default_shade_color='#090b10',
default_bar_height=10,
default_bar_width=500,
double_buffer=true,
diff --git a/templates/dunstrc b/templates/dunstrc
index de34cb1..fc4a988 100644
--- a/templates/dunstrc
+++ b/templates/dunstrc
@@ -59,17 +59,17 @@
[experimental]
per_monitor_dpi = false
[urgency_low]
- background = "#3b4252"
- foreground = "#d8dee9"
- frame_color = "#4c566a"
+ background = "#171925"
+ foreground = "#717cb4"
+ frame_color = "#2e3446"
timeout = 10
[urgency_normal]
- background = "#2e3440"
- foreground = "#d8dee9"
+ background = "#0f111a"
+ foreground = "#a6accd"
frame_color = "@ACCENT@"
timeout = 10
[urgency_critical]
- background = "#2e3440"
- foreground = "#d8dee9"
- frame_color = "#bf616a"
+ background = "#0f111a"
+ foreground = "#a6accd"
+ frame_color = "#ff5370"
timeout = 0
diff --git a/templates/homepage/custom.css b/templates/homepage/custom.css
index e2b7027..5453292 100644
--- a/templates/homepage/custom.css
+++ b/templates/homepage/custom.css
@@ -1,42 +1,42 @@
-/* Generated by udt-palette from palette/nord.conf. Do not edit.
+/* Generated by udt-palette from palette/material-ocean.conf. Do not edit.
*
- * Catppuccin-independent: every colour here comes from palette/roles-nord
+ * Catppuccin-independent: every colour here comes from palette/roles-material-ocean
* .conf, so this file follows the desktop rather than restating a palette.
*/
.theme-gray {
- --color-50: 216 222 233;
- --color-100: 229 233 240;
- --color-200: 216 222 233;
- --color-300: 216 222 233;
- --color-400: 76 86 106;
- --color-500: 76 86 106;
- --color-600: 67 76 94;
- --color-700: 67 76 94;
- --color-800: 59 66 82;
- --color-900: 46 52 64;
+ --color-50: 166 172 205;
+ --color-100: 166 172 205;
+ --color-200: 113 124 180;
+ --color-300: 113 124 180;
+ --color-400: 75 82 109;
+ --color-500: 75 82 109;
+ --color-600: 46 52 70;
+ --color-700: 31 34 51;
+ --color-800: 31 34 51;
+ --color-900: 15 17 26;
- --color-logo-start: 136 192 208;
- --color-logo-stop: 143 188 187;
+ --color-logo-start: 137 221 255;
+ --color-logo-stop: 137 221 255;
}
/* Card backgrounds, which the ramp does not reach. See the note above. */
.theme-gray .bg-theme-100\/20:not([class^="backdrop-blur"]),
.theme-gray .dark\:bg-white\/5:not([class^="backdrop-blur"]) {
- background-color: rgb(59 66 82 / 55%);
+ background-color: rgb(31 34 51 / 55%);
}
.theme-gray .bg-theme-100\/20:hover:not([class^="backdrop-blur"]),
.theme-gray .dark\:bg-white\/5:hover:not([class^="backdrop-blur"]) {
- background-color: rgb(67 76 94 / 70%);
+ background-color: rgb(31 34 51 / 70%);
}
.theme-gray .bg-theme-900\/50:not([class^="backdrop-blur"]) {
- background-color: rgb(46 52 64 / 50%);
+ background-color: rgb(15 17 26 / 50%);
}
/* Accent on secondary labels. Fixed, not wallpaper-tracking: this runs on a
* server with no wallpaper to read. */
.theme-gray .text-theme-500 {
- color: #88c0d0;
+ color: #89ddff;
}