# Waybar The bar is [waybar-theme-udt](../../../waybar-theme-udt), which lives in its own repository and its own config directory, `~/.config/waybar-udt/`. This project supplies only its colours. `theme.css` is generated here, but `install.sh` does not copy it there itself: it calls the bar's own `install.sh`, with `UDT_PALETTE_DONE=1` so that script skips regenerating the palette it has just been handed. That is because the palette reaches the bar as **three** generated files, not one: `styles/theme.css`, `dots.colors` for the two dot scripts, which are bash and cannot read `@define-color`, and two tints of the Slackware mark, which has to contrast with the accent pill at rest and the dark pill on hover. Copying only the stylesheet recoloured every pill and left the dots and the mark on the previous scheme's colours. Generating them here instead would mean two writers for the same files, drifting apart the moment either is edited. The call is never fatal: a failure in the bar's install warns and leaves the bar on its old colours rather than stopping kitty, Kvantum and Sublime from being themed. Same reasoning as `udt-appthemes`. ## What the bar asks for Seven names, and nothing else: @accent @main-bg @main-fg @hover-bg @hover-fg @outline @critical plus `@warning`, and the Catppuccin-named compat rows, which the bar's dot scripts read indirectly: `waybar-theme-udt/install.sh` parses `green`, `teal`, `mauve`, `overlay0`, `warning` and `critical` back out of the generated file to write a shell fragment, because those scripts are bash and cannot read `@define-color`. **There are no per-module colours.** The stock bar alternated module backgrounds so it read as stripes, and carried a role per module to do it: `workspaces`, `temperature`, `memory`, `cpu`, `time`, `date`, `tray`, `volume`, `backlight`, `battery`, plus `charging`. The current bar draws every pill on `@main-bg`, so all eleven had no consumer left and were removed from every `roles-*.conf` and from `gen_waybar`. Re-adding one means a stylesheet that actually references it. ## The stock config is left alone `~/.config/waybar/` is still on disk and nothing launches it: hyprland's autostart runs the new bar instead. Its stylesheets still reference the per-module names above, which this generator no longer emits, so `install.sh` deliberately does **not** write a theme into it. Writing one would leave it referencing colours that do not exist, which is worse than leaving it exactly as it was last known to work. ## Reloading `killall -SIGUSR2 waybar` applies a CSS change, and the bar sets `reload_style_on_change`, so rewriting `theme.css` reaches it on its own. A change to `config.jsonc` needs a restart rather than a signal.