Skip to content

Add theme-matching bar widget colours - #12

Open
keylimesoda wants to merge 1 commit into
GreyforgeLabs:mainfrom
keylimesoda:feature/bar-widget-colours
Open

keylimesoda wants to merge 1 commit into
GreyforgeLabs:mainfrom
keylimesoda:feature/bar-widget-colours

Conversation

@keylimesoda

Copy link
Copy Markdown
Contributor

Summary

Reprieve's bar mark is the one icon in the bar that ignores the theme. This adds an opt-in barAccent setting with three modes:

barAccent Look
brand (default) Existing cyan angel and amber markers — unchanged
theme Two-tone: wings in the bar text colour, halo and parked/recovered markers in the theme accent
accent Solid theme-accent angel

Alerts keep the theme's urgent colour in every mode.

Why two-tone

Most bar widgets draw their glyph in bar.barForeground and reserve Color.accent for state and detail — Omamail is the clearest example, with its envelope in the foreground, the "M" fold in the accent, and accent unread/open marks. theme follows that convention: the angel reads as part of the bar, while the halo and state markers carry the accent. accent stays available for anyone who wants a single-colour mark.

Implementation

  • brand/ReprieveAngel.qml gains tint (wings) and halo colours. Two white SVG masks are painted with MultiEffect, so the artwork is recoloured in the theme rather than tinting the dark brand art. The mask layers stay enabled so switching modes at runtime does not leave the mark blank.
  • BarWidget.qml maps the modes: wings use the bar foreground or accent; the halo, parked markers and recovered markers use the accent; per-window plate borders use a subtle foreground in two-tone; attention stays urgent. The overflow badge picks black or white text based on the marker colour.
  • barAccent is validated and persisted by the service, exposed in bar status, and documented in the manifest schema and README.
  • Defaults to brand, so existing installations are visually unchanged.

Switching

reprieve bar theme on      # two-tone (bar text + accent)
reprieve bar accent on     # solid accent
reprieve bar theme off     # back to brand
reprieve bar status        # reports the active look

Screenshots

Ristretto theme, cropped from the live bar (context strip at 5×, close-ups at 8×):

Reprieve bar widget in brand, two-tone and accent modes

Tests

  • bash tests/run.sh — passes (model, service, flight, journal, binds, media, doctor, wrapper, namespace, plugin validate).
  • qmllint on BarWidget.qml, Service.qml and brand/ReprieveAngel.qml — clean.

The screenshot is a new docs/screenshots/bar-colours.png, also referenced from the bar widget section of the README.

@keylimesoda
keylimesoda force-pushed the feature/bar-widget-colours branch from 1b41398 to e6e4b6c Compare October 22, 2026 22:46
@keylimesoda

Copy link
Copy Markdown
Contributor Author

Reprieve icon kinda sticks out with its stable color on an OS that is intended to be heavily themed/riced.

This doesn't put icon color changes front-and-center in the UX, but it does expose and advertise them via CLI for folks who care to dig a bit to make the change.

Myself, I think the two-tone themed logo looks really slick.

The angel keeps its brand look by default. A new barAccent setting adds a
two-tone theme mode (wings in the bar text colour, halo and state markers in
the theme accent) and a solid accent mode. Alerts still use the urgent
colour, and the count badge picks a readable text colour for any accent.

reprieve bar theme on|off and accent on|off switch it; bar status reports it.
@keylimesoda
keylimesoda force-pushed the feature/bar-widget-colours branch from e6e4b6c to c43f78d Compare October 28, 2026 07:10
@keylimesoda

Copy link
Copy Markdown
Contributor Author

Rebased onto current main (1.5.5) and resolved the CHANGELOG and bin/reprieve conflicts. Full test suite and QML lint pass; the PR is mergeable again.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant