| Age | Commit message (Collapse) | Author | Files | Lines |
|
kcalc rendered white under the dark Kvantum theme. Off Plasma,
KStyleManager forces Breeze unless kdeglobals names a widgetStyle, and
KColorSchemeManager applies BreezeLight unless kdeglobals names a colour
scheme; qt6ct never forwards the portal's prefer-dark to Qt.
Generate a udt.colors KColorScheme from the Kvantum roles, install it to
~/.local/share/color-schemes/, and point kdeglobals at it and at
kvantum-dark.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
|
udt-palette renders the scheme-level palette to
templates/hyprlock/hyprlock-palette.conf ($panel, $input_bg, $text,
$subtext, $fail); udt-accent writes the wallpaper accent gradient to
~/.cache/udt/hyprlock-border.conf as a hyprlang variable. The hyprlock
config sources both, so a scheme switch recolours the lock and a
wallpaper change recolours its border.
install.sh copies the palette and seeds the border from the committed
fallback on a fresh cache. Both selftests cover the new outputs.
|
|
|
|
70 new targets: the two stylesheets, the metatheme descriptor and 67 widget
assets. The assets are discovered from disk rather than listed, because they
arrive as a set from upstream and a hand-written list would miss one added by
a future refresh.
Substitution does the _RGB@ form before the bare @ROLE@: @FG@ is a prefix of
@FG_RGB@, so the other order would eat the start of the triple placeholder
and leave a literal "_RGB@" in the CSS.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
|
|
dunst no longer runs on this desktop. notifyd owns
org.freedesktop.Notifications and the quickshell notifications shell
draws the balloons, reading the palette from ~/.cache/wal/udt-palette.qml
like every other quickshell component. So the whole dunst path was
generating a config nothing read.
It was also actively wrong. pywal rendered ~/.cache/wal/dunstrc from the
installed template, then wal.sh restarted dunst on it while @ACCENT@ was
still an unsubstituted placeholder, and udt-accent restarted it a second
time after substituting. Two restarts per wallpaper change, the first on
a broken config, for a daemon that could not claim the bus name anyway.
Removes gen_dunst and its TARGETS entry, write_dunst and DUNSTRC, the
install block, templates/dunstrc.in and the gitignore entry. The reload
table now lists quickshell, which needs no signal: it watches the
generated palette and re-reads it in place.
The [state] roles stay. They were never dunst-only; waybar module states
and conky warnings use the same four.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
|
|
Two outputs, not one. The colour scheme themes the editor pane and tracks
the wallpaper accent; the theme themes the UI chrome and sits on the
scheme's fixed accent, because Sublime reads a theme once per window and a
moving accent would leave open windows disagreeing with new ones.
The colour scheme costs no new roles. Its scopes map onto the sixteen ANSI
slots every scheme already declares, so all nine satisfy it and the
identical-role-set selftest passes untouched.
The theme is an override layered over Material Behave rather than a theme
of its own: that theme hardcodes 419 rules of [r,g,b] literals with no
variables, so the chrome surfaces are restated and its geometry, icons and
animations are inherited. It installs under the name of the theme it
overrides, because Sublime merges .sublime-theme files by filename with
Packages/User last; under its own name it would never apply. It also has
to follow Material Behave's material_theme_contrast_mode block and carry
no settings gate, or contrast mode wins.
The accent is replaced by matching the variable's current value rather
than a placeholder: install.sh copies the file out of the repo, so after
the first wallpaper change there is no placeholder left to substitute.
udt-accent --selftest now covers that it stays idempotent.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
|
|
All three are written by udt-palette and rewritten by every install, so
each scheme switch showed them as modified. dunstrc and conky.conf were
already in .gitignore and tracked anyway, which does nothing: the ignore
list is not consulted for files already in the index. homepage's
custom.css was missing from the list entirely.
Add the missing entry and drop all three from the index. AGENTS.md
already documents them as generated and gitignored, so this makes the
repo match what it says.
Verified all three regenerate from an absent file.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0176XsV85ByN2ee7HseUKcqA
|
|
Both expose a first-class, update-safe theming hook, which is what separates
them from the Electron apps that cannot be consumers: Signal, Discord and
Spotify ship closed bundles whose only theming route is patching a signed
asar that every update reverts.
Obsidian gets a CSS snippet rather than a theme, so it layers over whatever
theme a vault already uses instead of replacing the user's choice. Enabling it
means appending to enabledCssSnippets in each vault's appearance.json, which
bin/udt-appthemes does by reading the list and adding to it: rewriting the file
would have switched off the layout snippet one vault was already using.
Typora's theme is derived from the Dracula theme installed here, whose 350
rules all resolve through :root variables, so only that block is templated and
none of the layout is touched.
Verified across six vaults, nested ones included: the vault with an existing
snippet kept it, a vault with no appearance.json got a valid one, and three
consecutive installs leave exactly one udt entry.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_015gbjA2bmswN8jyPDKzrvqe
|
|
Qt and GTK were the one part of the desktop the palette never reached: Kvantum
was pinned to a hand-installed catppuccin-macchiato-lavender directory, so
pcmanfm-qt and every other Qt app stayed Macchiato no matter which scheme was
selected.
A Kvantum theme is a .kvconfig of colours and a .svg of widget artwork with
colours baked into the paths, which looked like it needed redrawing. It did
not: the SVG carries only 27 distinct colours, 12 of them palette colours and
the rest neutral greys that are shading, not theme colour. Both files are now
templates with the 12 as placeholders, derived from the theme this desktop was
already running.
Installs to ~/.config/Kvantum/udt/ under one fixed name for every scheme, so a
switch needs no change to kvantum.kvconfig and leaves no stale theme behind.
Adds accent_dim and accent_bright roles for Kvantum's hover and pressed states.
Verified: no placeholders survive generation, the SVG still parses as XML, and
pcmanfm-qt picks up the new colours on restart. Qt reads a theme at startup
only, so running apps need restarting; AGENTS.md says so.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_015gbjA2bmswN8jyPDKzrvqe
|
|
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
|
|
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01G6aeE37K4GHBsaM51yLTTq
|