Expand shell-theme UI control: typography, [panel]/[osd], [[bar.widget]] (v0.7.8) #11
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "feature/theme-typography"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Four axes of theme UI control, all defaulting to the current rendering:
breadbar side: Breadway/breadbar#feature/theme-ui-control (repin follows this tag).
A shell theme's font_family / font_fallback / font_size_base only reached breadbox's launcher panel — the whole breadbar bar and every other bread GTK app rendered a hardcoded 'Varela Round 14px' baked into bread_theme::stylesheet() as compile-time constants. - New `font_weight` token (int 100-900, default 400). - New `Typography` helper resolved from shell::load() (infallible); stylesheet() / stylesheet_resolved() / render() take it. font_family_css() builds a well-formed quoted family list from font_family + font_fallback (fixes the pre-existing `"Outfit, sans-serif", sans-serif` quoting bug in the launcher rule). - base.css: window.breadbar + .launcher-bg carry {font_family_css} / {font_size_base} / {font_weight}, so a live theme switch re-fonts the bar with no restart. .popover-caret gradient now reads accent_from/accent_to instead of a hardcoded @accent/@teal. - css_template_for(): a standalone theme (neither a builtin nor extending one) now renders from the shared base.css instead of an empty template. - liquid-motion pinned to the historical FONT_* constants (Varela Round / 14 / 400) so a default install is unchanged; glass-workbench (IBM Plex 13px) / spotlight / daylight (Outfit) now render their intended fonts. - Goldens re-blessed; stale "not-yet-consumed" accent comments removed.Axes 3 + 4 of the theme-UI-control expansion, bread-theme side. [panel] — { min_width (CSS via {panel_min_width}), sections (ordered subset of volume|output|brightness|system|power|tray) }. Default = all in current order + 248px, so goldens are unchanged. [osd] — { enabled (volume|brightness), dismiss_ms }. anchor stays [surfaces."breadbar-osd"], radius stays the osd_style token. [[bar.widget]] — a theme-declared live bar widget: an id, a slot (a widget:<key> that must exist in [bar.slots]), an order, a bind = { cmd, every } poll, and a node tree (box/label/icon/progress) mirroring bread_shared::widget::WidgetNode's shape so breadbar maps it 1:1. Node depth/count bounded (4/50); the color/weight/size style vocab is validated against the same names bread-shared uses; parse_duration handles ms/s/m. validate_slots gained the widget-has-a-home check. describe() gains panel / osd / bar.widget blocks. 112 tests.