breadbar/src
Breadway 2cbdb58f37 launcher: open the capsule on the currently-focused monitor
launcher_command::spawn() only runs for the primary App instance, and
AppInput::OpenLauncher always grabbed focus on that instance's own
capsule — but self.monitor is whichever output was focused ONCE, at
that instance's own init(), not re-resolved on every keybind press.
Start breadbar while eDP-1 is focused, move to DVI-I-1, press the
launcher keybind, and the capsule opened on eDP-1, off-screen from
where the user was looking.

Re-resolve the focused Hyprland monitor at fire-time via
primary_hypr_monitor() (already used for the same purpose at startup)
and route to the right instance: the primary's own capsule if the
focused monitor is its own, or forward to that monitor's tracked
Controller<App> in self.satellites otherwise. Falls back to the local
capsule when there's no focused monitor to resolve (screenshot mode,
hyprctl unavailable) or no tracked satellite for it yet (a very recent
hotplug reconcile hasn't caught up with).

Split the routing decision into a pure resolve_launcher_route()
helper so it's unit-testable without a live App/GTK/Hyprland stack;
covered by four new tests.
2026-08-31 15:45:25 +08:00
..
bar bar/workspaces: unit-test the dots width-index mapping 2026-08-31 15:45:25 +08:00
notifications notifications: re-apply toast click-through after the surface::apply migration 2026-08-31 15:45:25 +08:00
widgets Bind each bar to its output palette and finish the island chrome 2026-08-16 13:23:31 +08:00
launcher_command.rs capsule: accept the open event breadbox can actually emit 2026-08-31 15:45:25 +08:00
main.rs launcher: open the capsule on the currently-focused monitor 2026-08-31 15:45:25 +08:00
osd.rs Drive bar/window geometry and CSS tokens from the shell theme manifest 2026-08-31 15:45:25 +08:00
panel.rs panel: extend the dismiss-scrim pattern for the capsule's click-away (item B) 2026-08-31 15:45:25 +08:00
screenshot.rs capsule: keyboard open, query modes, sections, and search-state geometry (phase 6c) 2026-08-31 15:45:25 +08:00
surface.rs notifications: re-apply toast click-through after the surface::apply migration 2026-08-31 15:45:25 +08:00
theme.rs theme: adapt to bread-theme's ThemeWatch return type 2026-08-31 15:45:25 +08:00