From 7b55910a786c7652ac80a576399ebd9f81a8ac72 Mon Sep 17 00:00:00 2001 From: "Danilo M." Date: Fri, 11 Sep 2026 17:20:50 +0200 Subject: 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/.conf holds the colours under the scheme's own names, and palette/roles-.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 Claude-Session: https://claude.ai/code/session_015gbjA2bmswN8jyPDKzrvqe --- templates/dunstrc.in | 75 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 75 insertions(+) create mode 100644 templates/dunstrc.in (limited to 'templates/dunstrc.in') diff --git a/templates/dunstrc.in b/templates/dunstrc.in new file mode 100644 index 0000000..f3a096e --- /dev/null +++ b/templates/dunstrc.in @@ -0,0 +1,75 @@ +# See dunst(5) for all configuration options +[global] + monitor = 1 + follow = none + width = 300 + height = (0, 300) + origin = top-right + offset = (10, 50) + scale = 0 + notification_limit = 0 + progress_bar = true + progress_bar_height = 10 + progress_bar_frame_width = 1 + progress_bar_min_width = 150 + progress_bar_max_width = 300 + indicate_hidden = yes + transparency = 15 + separator_height = 2 + padding = 8 + horizontal_padding = 8 + text_icon_padding = 0 + frame_width = 3 + frame_color = "@ACCENT@" + gap_size = 0 + separator_color = frame + sort = yes + font = Noto Sans 11 + line_height = 0 + markup = full + format = "%a\n%s%p %n\n%b" + alignment = left + vertical_alignment = center + show_age_threshold = 60 + ellipsize = middle + ignore_newline = no + stack_duplicates = true + hide_duplicate_count = false + show_indicators = yes + enable_recursive_icon_lookup = true + icon_theme = MB-Blueberry-Suru-GLOW + icon_position = left + icon_corner_radius = 5 + min_icon_size = 32 + max_icon_size = 128 + icon_path = ~/.local/share/icons/MB-Blueberry-Suru-GLOW/status/48/:/usr/share/icons/MB-Blueberry-Suru-GLOW/devices/48/ + sticky_history = yes + history_length = 20 + dmenu = /usr/bin/rofi -theme ~/.config/rofi/udt/list.rasi -dmenu -p dunst + browser = /usr/bin/xdg-open + always_run_script = true + title = Dunst + class = Dunst + corner_radius = 10 + ignore_dbusclose = false + mouse_left_click = context, close_current + mouse_middle_click = do_action, close_current + mouse_right_click = close_all +# to have a consistent behaviour across releases. +[experimental] + per_monitor_dpi = false +[urgency_low] + background = "@BG_ALT@" + foreground = "@FG_DIM@" + frame_color = "@BORDER@" + timeout = 10 +[urgency_normal] + background = "@BG@" + foreground = "@FG@" + frame_color = "@ACCENT@" + timeout = 10 +[urgency_critical] + background = "@BG@" + foreground = "@FG@" + frame_color = "@CRITICAL@" + timeout = 0 -- cgit v1.2.3