[osd].enabled and dismiss_ms are validated but never read — OSDs always run with a hardcoded 2000ms #14
Labels
No labels
bug
ci
enhancement
feature
privacy
security
theme-system
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
Breadway/breadbar#14
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
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?
What's broken
Same class of bug as the
[panel].sectionsissue (companion issue, same root cause).docs/shell-themes.mddocuments[osd]:bread-theme'sresolve_osd()(bread-ecosystem/bread-theme/src/shell/manifest.rs:855) validatesenabledagainstOSD_KINDSanddismiss_ms(must be ≥ 1), landing onShellTheme::osd().ShellTheme::osd()is never called anywhere in breadbar (zero matches outsidebread-theme/src):osd::spawn()(src/osd.rs:85) unconditionally spawns bothvolume_watcherandbrightness_watcherthreads —[osd].enabledhas no effect; you cannot disable either OSD kind via theme.toml.gtk4::glib::timeout_future(Duration::from_millis(2000)).awaitatsrc/osd.rs:271.[osd].dismiss_msis parsed and validated but never substituted in — it happens to match the schema default (2000), which is presumably why this has gone unnoticed.Impact
Same as the panel issue:
theme.tomlcan declare[osd] enabled = ["volume"] dismiss_ms = 5000,bread-theme diagnosepasses, and breadbar's behavior is byte-identical to not setting it at all.Fix
volume_watcher/brightness_watcherspawn inosd::spawn()ontheme::shell_theme().osd().enabled.2000atsrc/osd.rs:271withtheme::shell_theme().osd().dismiss_ms.dismiss_msis documented as live ("applies to the next OSD") so no restart wiring needed there;enabledneeds the same restart-detection breadbar already has for other structural changes (see the sibling panel.sections issue forneeds_restart()).Same false alarm as BAR-13 — stale local clone. Also fixed by PR #12 (
bd3d5b4, merged 2026-09-04):osd::spawnnow takes enabled kinds gating the watcher threads, anddismiss_msreplaces the hardcoded 2000ms constant. Verified againstorigin/main(083ae51). Closing.