Adopt bread-launcher (reconciled with the liquid-motion redesign) #4

Merged
Breadway merged 1 commit from feature/launcher-adopt into main 2026-08-31 18:14:20 +08:00
Owner

Reconciles the long-lived feature/launcher-core (13 commits, feature/launcher-theming folded in) with main's independent launcher redesign — the two lines rewrote the same ~200-line run_ui/build_css region incompatibly, so this lands as one squashed reconciliation rather than a 13-commit rebase. Old tip archived at tag archive/launcher-core-13commits.

What

breadbox's launcher becomes a thin host over the bread-launcher crate (bread-ecosystem v0.7.5) — the same core breadbar's embedded capsule uses:

  • breadbox-shared → re-export shim over bread_launcher (DesktopEntry, LaunchHistory, config_dir, LAUNCHER_APP); local fuzzy-match / ranking / desktop-file parsing deleted.
  • run_ui builds bread_launcher::gtk::ResultsList and calls bread_launcher::do_launch / load_sorted_entries; hand-rolled rows/icons/scoring gone.
  • Geometry + style from the active shell-theme manifest (bread_theme::shell, new src/theme.rs mirroring breadbar's accessor) — width, radius, panel alpha, top margin, icon size, footer wording. The liquid-motion / Daylight look is the manifest's job now, not hardcoded CSS.
  • Keeps main's improvements on top of the branch work: overlay window + outside-click via bread_utils::gtk_popup (new_overlay_window / bind_window_auto / close_on_outside_click), replacing the manual layer-shell + GestureClick boilerplate.
  • Embedded-open redirect preserved: emits bread.box.open_requested when the active theme embeds the launcher, falls back to its own overlay when breadd is down.

Pins

bread-theme / bread-utils / bread-screenshots / bread-launcherv0.7.5 (first tag with bread-launcher + bread_theme::shell). breadbox-shared too. .cargo/ gitignored — the sibling-checkout source override (fa85fc1) is obsolete now v0.7.5 is tagged.

Checks

cargo build --locked / cargo test --locked (6 pass) / cargo clippy --all-targets --locked -- -D warnings — all clean against the real v0.7.5 git tag (no local patch).

Manual smoke (needs doing on hermes)

  • open breadbox, type, arrow-key + Enter to launch, Esc / click-outside to close
  • icon rendering (themed + cached-path fallback), footer count updates as you filter
  • under a theme whose launcher is embedded (spotlight): Super-open emits bread.box.open_requested, breadbar's capsule opens instead of breadbox's window
  • with breadd stopped: breadbox falls back to its own overlay
  • --screenshot capture
Reconciles the long-lived `feature/launcher-core` (13 commits, `feature/launcher-theming` folded in) with `main`'s independent launcher redesign — the two lines rewrote the same ~200-line `run_ui`/`build_css` region incompatibly, so this lands as **one squashed reconciliation** rather than a 13-commit rebase. Old tip archived at tag `archive/launcher-core-13commits`. ## What breadbox's launcher becomes a thin host over the **`bread-launcher`** crate (bread-ecosystem v0.7.5) — the same core breadbar's embedded capsule uses: - `breadbox-shared` → re-export shim over `bread_launcher` (`DesktopEntry`, `LaunchHistory`, `config_dir`, `LAUNCHER_APP`); local fuzzy-match / ranking / desktop-file parsing deleted. - `run_ui` builds `bread_launcher::gtk::ResultsList` and calls `bread_launcher::do_launch` / `load_sorted_entries`; hand-rolled rows/icons/scoring gone. - Geometry + style from the active shell-theme manifest (`bread_theme::shell`, new `src/theme.rs` mirroring breadbar's accessor) — width, radius, panel alpha, top margin, icon size, footer wording. **The liquid-motion / Daylight look is the manifest's job now, not hardcoded CSS.** - Keeps `main`'s improvements on top of the branch work: overlay window + outside-click via `bread_utils::gtk_popup` (`new_overlay_window` / `bind_window_auto` / `close_on_outside_click`), replacing the manual layer-shell + `GestureClick` boilerplate. - Embedded-open redirect preserved: emits `bread.box.open_requested` when the active theme embeds the launcher, falls back to its own overlay when breadd is down. ## Pins `bread-theme` / `bread-utils` / `bread-screenshots` / `bread-launcher` → **v0.7.5** (first tag with `bread-launcher` + `bread_theme::shell`). `breadbox-shared` too. `.cargo/` gitignored — the sibling-checkout source override (`fa85fc1`) is obsolete now v0.7.5 is tagged. ## Checks `cargo build --locked` / `cargo test --locked` (6 pass) / `cargo clippy --all-targets --locked -- -D warnings` — all clean against the real v0.7.5 git tag (no local patch). ## Manual smoke (needs doing on hermes) - open breadbox, type, arrow-key + Enter to launch, Esc / click-outside to close - icon rendering (themed + cached-path fallback), footer count updates as you filter - under a theme whose launcher is embedded (spotlight): `Super`-open emits `bread.box.open_requested`, breadbar's capsule opens instead of breadbox's window - with breadd stopped: breadbox falls back to its own overlay - `--screenshot` capture
Breadway added 1 commit 2026-08-31 16:00:08 +08:00
Adopt bread-launcher: shared matching/ranking/rows + manifest theming
All checks were successful
check / check (push) Successful in 1m29s
09530e236d
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.
Breadway merged commit 5169901b95 into main 2026-08-31 18:14:20 +08:00
Breadway deleted branch feature/launcher-adopt 2026-08-31 18:14:20 +08:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: Breadway/breadbox#4
No description provided.