bar: implement spotlight's embedded launcher capsule (Phase 6b)
- New bread-launcher dep (gtk feature), pinned tag v0.7.4 with a dev-only [patch] entry alongside bread-theme's. - Wire the drawer slot (plan §2/§7): root becomes a vbox whose first row is the existing CenterBox and whose second is drawer_box, appended via the same ModuleRegistry::for_each_in_slot pattern left/centre/right already use. Empty for liquid-motion/glass-workbench (zero children, zero size); theme.rs's window.breadbar > centerbox selector becomes > box > centerbox to follow the new nesting, byte-identical CSS for both existing themes. - modules.workspaces.style = dots: bar::workspaces::make_dot_button, width from modules.workspaces.dot_widths, wired as a third rebuild_buttons arm. - New launcher_entry (plain GtkEntry) and launcher_results (bread_launcher::gtk::ResultsList, sharing breadbox's cache/history via bread_launcher::LAUNCHER_APP) modules, built unconditionally and placed only when a theme's [bar.slots] names them (spotlight today). - Capsule expand/collapse: typing/focus opens the drawer and animates its height via bread_theme::anim::spring_to; Up/Down move the selection, Enter launches (do_launch + record_launch) and collapses, Escape collapses and releases keyboard focus (on_demand ties to GTK's own focus-widget state, so releasing GTK focus hands the compositor keyboard back). - window.width now wires Width::Px into set_default_width (previously unconsumed — Fill-anchored themes never needed it, the capsule does). - Two new --screenshot views: capsule-collapsed, capsule-expanded (the latter focuses launcher_entry, types a query, and captures bar height + the drawer's actual settled height rather than a guessed constant). cargo check/clippy: no new warnings (same two pre-existing: dead_code on system_stats_box/cpu_pair/mem_pair/pwr_pair, from_* on workspaces.rs). cargo test: 18/18 unchanged.
This commit is contained in:
parent
df6b568cc1
commit
1fb10a10cd
6 changed files with 512 additions and 10 deletions
|
|
@ -21,6 +21,11 @@ bread-utils = { git = "https://git.breadway.dev/Breadway/bread-ecosystem", tag =
|
|||
bread-shared = { git = "https://git.breadway.dev/Breadway/bread", tag = "v0.8.0-rc.1" }
|
||||
# Capture primitives for `--screenshot` mode — see src/screenshot.rs.
|
||||
bread-screenshots = { git = "https://git.breadway.dev/Breadway/bread-ecosystem", tag = "v0.7.4" }
|
||||
# Headless app-launcher core + GTK4 results-list widget (plan §3/§7): theme
|
||||
# 04/spotlight embeds the SAME `ResultsList` breadbox's overlay wraps, via
|
||||
# `bar::launcher_results` — one implementation, two hosts. `gtk` feature for
|
||||
# the results widget itself.
|
||||
bread-launcher = { git = "https://git.breadway.dev/Breadway/bread-ecosystem", tag = "v0.7.4", features = ["gtk"] }
|
||||
gtk4 = { version = "0.11", features = ["v4_12"] }
|
||||
gtk4-layer-shell = "0.8"
|
||||
relm4 = { version = "0.11", features = ["macros"] }
|
||||
|
|
@ -46,3 +51,4 @@ strip = "symbols"
|
|||
# (feature/shell-theme-manifest) before it is tagged as a release.
|
||||
[patch."https://git.breadway.dev/Breadway/bread-ecosystem"]
|
||||
bread-theme = { path = "../bread-ecosystem/bread-theme" }
|
||||
bread-launcher = { path = "../bread-ecosystem/bread-launcher" }
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue