aboutsummaryrefslogtreecommitdiffstats
path: root/SPEC.md
diff options
context:
space:
mode:
authorDanilo M. <danix@danix.xyz>2026-09-15 17:16:25 +0200
committerDanilo M. <danix@danix.xyz>2026-09-15 17:16:25 +0200
commit27a8666422ef02fb8a827ef27be963f0d19610a2 (patch)
tree365d47c3587036bf83feac1cee0096513634a3a2 /SPEC.md
parentfea331158915713d980bafde6c38a6954d5c233b (diff)
downloadwaybar-theme-udt-27a8666422ef02fb8a827ef27be963f0d19610a2.tar.gz
waybar-theme-udt-27a8666422ef02fb8a827ef27be963f0d19610a2.zip
feat: launcher to the DP-1 centre, hamburger for English
The launcher sat in the centre of the DP-3 status bar, which is the narrow rotated screen. It moves to the middle of the DP-1 desktop bar, where the workspaces and the window list already live and there is room either side of it. Each bar object carries its own include list, so the module definition moves with it. English gets the hamburger back. The stock bar drew it with an emoji, which this module cannot do: it is an image module and takes a path, not text. So the emoji ships as an image instead, from Twemoji. Doing it the other way round, reverting to hyprland/language and its format-en text, would have brought the burger back at the cost of turning the Italian flag into an emoji too, and the real flag asset is worth keeping. flag-gb.svg had no reference left after that, so it is deleted, and install.sh removes the copy an earlier install left behind. The docs carried three claims that were wrong rather than merely stale: the launcher was listed as a CSS background when it has been an image module since the mark was fixed, and SPEC still described the udt role work as adding roles named after this bar's modules when what shipped was deleting eleven roles nothing read. The dot colours were described as coming from [state] roles that gen_waybar never emitted. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Diffstat (limited to 'SPEC.md')
-rw-r--r--SPEC.md56
1 files changed, 31 insertions, 25 deletions
diff --git a/SPEC.md b/SPEC.md
index 7d151d1..54e6d62 100644
--- a/SPEC.md
+++ b/SPEC.md
@@ -23,11 +23,11 @@ pointed at DP-3.
## Layout
- DP-3 [📅 Wed 15/09] [🕑 14:32] [●] [S] [●] [✉ 9] [🔊] [tray] [⏻] [🇮🇹]
- date time vm launcher priv mail vol tray present lang
+ DP-3 [📅 Wed 15/09] [🕑 14:32] [●] [●] [✉ 9] [🔊] [tray] [⏻] [🇮🇹]
+ date time vm priv mail vol tray present lang
- DP-1 [1..8] [ open windows ]
- workspaces taskbar
+ DP-1 [1..8] [S] [ open windows ]
+ workspaces launcher taskbar
DP-3 is rotated, so a bar there is only 1080px wide. One bar holding every
module was too crowded at that width, so status stays on DP-3 alone and the
@@ -47,7 +47,7 @@ transparent gaps, so the bar reads as groups rather than a continuous strip.
| Position | Module | Icon source | Notes |
| --- | --- | --- | --- |
-| left | `image#launcher` | `slackware.svg`, shipped here | Accent background, the one always-coloured pill. Opens the quickshell drawer. An `image` module: a `custom` one draws nothing when its format is empty, and the format has to be empty because the mark is an icon. |
+| DP-1 centre | `image#launcher` | `slackware.svg`, shipped here | Accent background, the one always-coloured pill. Opens the quickshell drawer. An `image` module: a `custom` one draws nothing when its format is empty, and the format has to be empty because the mark is an icon. |
| left | `clock#date` | `x-office-calendar` | Icon then text. Calendar tooltip kept. |
| left | `clock#time` | `clock` | Icon then text. |
| left | `hyprland/workspaces` | eight themed icons, via CSS | See below. |
@@ -57,7 +57,7 @@ transparent gaps, so the bar reads as groups rather than a continuous strip.
| right | `tray` | application-provided | |
| right | `custom/mail` | CSS, plus the count as text | Unread mail, the same notmuch watcher the stock bar ran. The envelope is a CSS background; the count stays text, because it is content rather than decoration, exactly like the clock. |
| right | `custom/presentation` | CSS, keyed on the module's class | Presentation mode, the same `statusctl`-backed module the stock bar ran. It already emits an empty text and a state class, so the icon is chosen in CSS and the glyphs are simply dropped. |
-| right | `image#lang` | `flag-it.svg` / `flag-gb.svg`, shipped here | An `image` module: `hyprland/language` styles as `#language` only, with no per-language class, so a flag cannot be selected in CSS. |
+| right | `image#lang` | `flag-it.svg` / `burger.svg`, shipped here | An `image` module: `hyprland/language` styles as `#language` only, with no per-language class, so the image cannot be selected in CSS. English gets the hamburger the stock bar showed, not a flag. |
Dropped from the current bar: `custom/breaktimer`, `custom/mail`,
`custom/privacy_dots` stays only if you want it on this bar too (it is
@@ -152,7 +152,7 @@ Modular, one file per module, mirroring the current setup:
icons/
slackware.svg carries @ACCENT@, substituted on install
flag-it.svg
- flag-gb.svg
+ burger.svg
bin/
wb-icon state to icon path, for the `image` modules
vms_dots.sh moved here from ~/bin, symlinked back
@@ -169,24 +169,30 @@ module file explicitly. That is a waybar limitation, not a choice.
This repo is a **consumer** of udt: it holds the bar, udt holds the colours.
`styles/theme.css` is generated by `udt-palette` and gitignored, exactly like
-every other generated file in that repo. Generating it needs two changes on
-the udt side:
-
-**A new `[waybar]` role block.** The current one names `temperature`,
-`memory`, `cpu`, `backlight` and `battery`, none of which exist on this bar.
-The new roles are `launcher`, `workspaces`, `vmdots`, `taskbar`, `volume`,
-`tray`, `present`, `lang`, `date`, `time`, plus the existing `main_*`,
-`hover_*` and `outline`.
-
-**Added to all nine `roles-*.conf`.** `udt-palette --selftest` enforces that
-every scheme defines the same role set, so a role added to one file and not
-the rest fails the check. That is the check doing its job.
-
-Dot colours come from the existing `[state]` roles: `success` for a running
-VM, `warning` for paused, `critical` for crashed, `info` for saved, and
-`fg_faint` for shut off. Both dot scripts currently hardcode `#30D158`,
-`#FFD60A`, `#FF9F0A`, `#9B32FA` and `#6E6E73`; they will read a generated
-colour block instead.
+every other generated file in that repo. udt's `install.sh` writes it straight
+into `~/.config/waybar-udt/styles/theme.css` under a fixed name this bar
+imports, so switching scheme rewrites the file the running bar already reads.
+
+**The `[waybar]` role block has no per-module colours.** This was planned as a
+rename, and turned out to be a deletion. The stock bar alternated module
+backgrounds so it read as stripes, and carried a role for each: `workspaces`,
+`temperature`, `memory`, `cpu`, `time`, `date`, `tray`, `volume`, `backlight`,
+`battery`, plus `charging`. This bar draws every pill on `@main-bg`, and its
+stylesheets reference seven names in total:
+
+ @accent @main-bg @main-fg @hover-bg @hover-fg @outline @critical
+
+So all eleven module roles had no consumer, and adding `launcher`, `mail` or
+`present` roles would have invented more of the same. They are gone from all
+nine `roles-*.conf` and from `gen_waybar`. Re-adding one means a stylesheet
+that actually references it.
+
+**Dot colours do not come from `[state]`.** `gen_waybar` never emitted
+`success` or `info`, so `install.sh` reads `green`, `teal`, `mauve`,
+`overlay0`, `warning` and `critical` back out of the generated stylesheet and
+writes `~/.config/waybar-udt/dots.colors` for the two scripts to source. They
+are bash and cannot read `@define-color`; both fall back to Macchiato values
+when that file is missing, so they still run standalone.
## Install