breadbox's launcher is now a thin host over the `bread-launcher` crate
(bread-ecosystem v0.7.5) — the same core breadbar's embedded capsule
uses — instead of a private implementation:
- `breadbox-shared` becomes a re-export shim over `bread_launcher`
(`DesktopEntry`, `LaunchHistory`, `config_dir`, `LAUNCHER_APP`); the
local fuzzy-match / ranking / desktop-file parsing is deleted.
- `run_ui` builds `bread_launcher::gtk::ResultsList` for the results
list and calls `bread_launcher::do_launch` / `load_sorted_entries`;
the hand-rolled row/icon/score code is gone.
- Launcher geometry and style come from the active shell-theme manifest
(`bread_theme::shell`, via the new `src/theme.rs` accessor mirroring
breadbar's) — width, radius, panel alpha, top margin, icon size,
footer wording. The Daylight / liquid-motion look is the manifest's
job now, not hardcoded CSS.
- Keeps `main`'s recent improvements on top of the branch work: the
overlay window + outside-click come from `bread_utils::gtk_popup`
(`new_overlay_window` / `bind_window_auto` / `close_on_outside_click`),
replacing the manual layer-shell + GestureClick boilerplate.
- Embedded-open redirect: when the active theme embeds the launcher
(spotlight capsule), breadbox emits `bread.box.open_requested` on the
bus instead of mapping its own window; falls back to its own overlay
when breadd is unreachable.
- Pins: bread-theme / bread-utils / bread-screenshots / bread-launcher
→ v0.7.5 (bread-launcher and `bread_theme::shell` first ship there).
`.cargo/` gitignored — the local sibling-checkout source override
(`fa85fc1`) is no longer needed now that v0.7.5 is tagged.
Reconciles the long-lived `feature/launcher-core` (13 commits, incl.
`feature/launcher-theming`) with `main`'s independent launcher redesign
(`feature/liquid-motion` + `bread_utils::gtk_popup` adoption). Applied
as one squashed reconciliation rather than a 13-commit rebase because
the two lines rewrote the same ~200-line `run_ui`/`build_css` region
in incompatible directions.
cargo build --locked / test --locked / clippy --all-targets --locked
-D warnings all clean.
Link bread-utils bread-client (tag v0.7.1) from the breadbox crate.
Fire-and-forget via BreadClient; silent if breadd is down. No command
verbs — breadbox is not a daemon. EVENTS.md is the contract (app id box).