| Age | Commit message (Collapse) | Author | Files | Lines |
|
install.sh wrote every config and reloaded nothing, so a scheme switch looked
half-applied: the files were correct but waybar, kitty, conky and dunst kept
drawing the old colours until five commands were run by hand.
It now signals waybar, kitty and Hyprland, runs udt-accent (which regenerates
the accent and restarts dunst), and restarts conky, which has no hot-reload.
Each is guarded on the process actually running, so a missing one is skipped
rather than started: verified conky stays stopped when it was not up before.
rofi needs nothing, it reads its theme per launch. Qt and GTK apps still need
a manual restart and the README says so.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_015gbjA2bmswN8jyPDKzrvqe
|
|
The dashboard's custom.css was written by hand against Macchiato, so it would
have drifted the moment the desktop changed scheme. It is now generated from
the same roles as everything else and staged on the host by install.sh.
Adds four intermediate grey roles to every scheme. homepage wants a full
ten-step ramp where the other consumers want three depths, and without them
several steps collapsed onto the same colour, flattening the mid-tones.
The scp is deliberately soft: five second timeout, BatchMode, a warning rather
than a failure when the host is unreachable, so a laptop away from that network
still installs the local theme. It stages to ~/hp-stage only, because
/opt/homepage/config is root-owned; install.sh prints the sudo copy to finish.
Verified: the generated Macchiato stylesheet reproduces the deployed one
colour-for-colour, switching to tokyo-night propagates through to the staged
file, and a failing scp leaves install.sh exiting 0.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_015gbjA2bmswN8jyPDKzrvqe
|
|
The selector was tracked at palette/roles.conf, which made switching scheme a
committable change: the previous commit carried `scheme = tokyo-night` in its
diff purely because that was the theme running at the time.
Which theme a machine runs is local state, not a property of the project, so
the live file is now ~/.config/udt/roles.conf. install.sh seeds it from
palette/roles.conf.default on a first run and never overwrites it, so a
switch leaves the working tree clean and two machines sharing this repo can
run different schemes. udt-palette falls back to the seed when no live file
exists, so a bare checkout still generates.
This is the one exception to the repo holding the canonical copy of
everything, and AGENTS.md says so.
Verified: seeding on a missing file, the seed not overwriting an existing
choice, generation from the seed alone, and both selftests.
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
|
|
The yes/no gate in front of shutdown was still on the old adi1090x theme, so
every shutdown showed a Macchiato power menu followed by a dialog that did not
match it.
Its glyphs now come from the theme's own Nerd Font rather than `feather`. That
meant changing the codepoints the script sends, since the originals were
Private Use Area points that only feather carries: they are now the Material
circled check and close (U+F05E0, U+F0159), which Inconsolata Nerd Font Mono
contains. Sized 42 to match the power menu, since the Material glyphs carry a
lot of internal padding and render small.
Worth knowing for future glyph choices: ClearlyU is installed and claims large
parts of the Private Use Area, so it can win fontconfig's fallback and draw a
blank where another font actually has the glyph. The U+F0xxx Nerd Font ranges
avoid that.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01G6aeE37K4GHBsaM51yLTTq
|
|
Sizing the widget with an explicit width and height collapsed it, so nothing
was drawn. The original type-4 theme sized it with a horizontal margin instead,
letting the widget expand to the window and squeezing it back to a square, so
do that.
The margin is computed with calc() from 50% rather than the original's
hardcoded 710px, which assumed one screen width and would sit off-center on a
second monitor.
The tilde path was never the problem: rofi does expand it inside a url().
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01G6aeE37K4GHBsaM51yLTTq
|
|
Three regressions from collapsing five theme systems into three layouts.
The layouts hardcoded `children`, which silently dropped any -mesg a script
passed. rofipass lost its keybinding cheatsheet and the power menu lost its
uptime line. list.rasi now lists the message widget; rofi hides it when there
is no message, so it costs nothing when unused.
The power menu was never a small menu. It is a deliberate fullscreen prompt
with a greeting, an avatar and one row of four large glyphs, and menu.rasi
flattened all of it. It gets its own layout, the one place where a prompt earns
its keep. The glyphs are drawn in Inconsolata Nerd Font Mono, which was
verified to contain all four; the old theme asked for `feather`, which contains
none of them and was relying on fallback.
The emoji picker is a dense grid of glyphs, not a list, and wasted most of a
single-column window. It gets grid.rasi, sized near the launcher's icons.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01G6aeE37K4GHBsaM51yLTTq
|
|
Matches the launcher position already in use (north-anchored, 600px, single
column) rather than the centered grid, and restores the wallpaper banner behind
the input area from the old darknix theme.
The wallpaper path cannot be committed: rofi does not expand a tilde inside a
url(), and an absolute path would bake in a home directory. So launcher.rasi
carries a placeholder and the installer generates the real file. The entry sits
on a solid plate so it stays legible over a bright wallpaper.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01G6aeE37K4GHBsaM51yLTTq
|
|
Installs by symlink so the repo stays canonical and the working config cannot
drift from it. accent.rasi is the exception: it points at the generated file in
the wal cache, seeded with the committed placeholder on a fresh install.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01G6aeE37K4GHBsaM51yLTTq
|