Extracts the app-launcher substance (desktop-entry parsing, fuzzy matching/ranking, launch history, launching) out of breadbox into a reusable ecosystem crate, so breadbar's future embedded capsule and breadbox's overlay window can share one implementation instead of two (THEME_SYSTEM_PLAN.md Phase 4/6a). The GTK4 results-list widget lives behind a `gtk` feature, mirroring bread-theme's `gtk`/`adw` gating, so a headless consumer isn't forced to link GTK. Adds unit tests for fuzzy_score/matches_term/priority_rank, which were previously untested pure functions inside breadbox's main.rs.
26 lines
1.3 KiB
TOML
26 lines
1.3 KiB
TOML
[package]
|
|
name = "bread-launcher"
|
|
version.workspace = true
|
|
edition.workspace = true
|
|
license.workspace = true
|
|
authors.workspace = true
|
|
description = "Headless app-launcher core (desktop-entry discovery, fuzzy matching/ranking, launch history, launching) plus an optional GTK4 results-list widget — the shared logic behind breadbox's overlay window and breadbar's embedded capsule"
|
|
repository = "https://git.breadway.dev/Breadway/bread-ecosystem"
|
|
keywords = ["launcher", "desktop-entry", "gtk4", "wayland"]
|
|
|
|
[dependencies]
|
|
serde_json = { workspace = true }
|
|
# `do_launch`/`emit_launched` publish a `bread.<app>.launched` event over
|
|
# breadd's IPC socket after a successful spawn, fire-and-forget — this was
|
|
# already breadbox's behaviour (`BreadClient::emit` never blocks or errors
|
|
# the launching caller), just relocated. Not optional: launching is core,
|
|
# headless functionality, unlike the GTK widget below.
|
|
bread-utils = { path = "../bread-utils", features = ["bread-client"] }
|
|
gtk4 = { version = "0.11", features = ["v4_12"], optional = true }
|
|
|
|
[features]
|
|
# Enable the GTK4 results-list widget (`gtk` module): row building, fuzzy
|
|
# filtering, match/history sorting, and keyboard-style selection movement.
|
|
# Optional so a headless consumer of the matching/ranking/launch core (or a
|
|
# future non-GTK host) doesn't have to pull in GTK4.
|
|
gtk = ["dep:gtk4"]
|