aboutsummaryrefslogtreecommitdiffstats

unified-desktop-theme

A single visual identity for a Hyprland desktop: Catppuccin Macchiato as the fixed base, Noto Sans for UI text, Inconsolata Nerd Font Mono for monospace.

The accent color follows the current wallpaper, but is always snapped to a real Macchiato accent, so it can never render as unreadable.

Phase 1 covers rofi. Later phases extend the same palette to waybar, conky, hyprland and quickshell.

Quickshell reads the palette rather than restating it: udt-accent writes ~/.cache/udt/udt-palette.qml from rofi/udt/palette.rasi, and the components in the quickshell repo watch that file, so editing the palette here recolours them without a restart.

Layout

rofi/udt/          the theme files
bin/udt-accent     wallpaper accent extractor

Both are installed by symlink, so the repo holds the canonical copies:

./install.sh

Design

See docs/superpowers/specs/ for the design spec and the reasoning behind each decision, including why accent extraction is deliberately isolated from the pywal cache.

License

GPLv2 only. See LICENSE.

Changing the colour scheme

Edit one line in ~/.config/udt/roles.conf:

scheme = macchiato

and run ./install.sh. That file is yours, not the repo's: install.sh creates it on a first run and never overwrites it, so switching scheme leaves the working tree clean.

install.sh reloads whatever is running (waybar, kitty, Hyprland, conky), so the switch is visible immediately. Qt and GTK apps only reread a theme on startup, so those need restarting by hand. Ships with macchiato, tokyo-night, nord and dracula; rofi, conky, waybar, kitty, Firefox and quickshell all follow.

A scheme is two files: palette/<name>.conf for the colours under the scheme's own names, and palette/roles-<name>.conf saying what each is for. Nothing else needs touching, and bin/udt-palette --selftest checks that a scheme can satisfy every role before you switch to it.

Development Approach

This project is developed using AI-assisted tools. Code is generated with the help of AI based on human-provided specifications, design decisions, and iterative feedback.

All contributions are reviewed, tested, and curated by the maintainer before being included in the codebase. AI is used as a productivity and exploration tool, while human oversight remains central to all decisions.

The goal is to combine the flexibility of AI-assisted development with standard open-source practices such as transparency, review, and accountability.