phosphor-popout

Central arbiter for transient popout lifetime, focus, and exclusivity.

The single coordinator every transient surface routes through: control center, launcher, calendar, notification history, OSDs, and tray menus. Centralising layer-shell creation, focus arbitration, screen affinity, exclusive zones, and dismiss-on-focus-loss avoids two popups fighting over a Wayland grab. The arbitration state machine lives in PopoutController, while surface creation hides behind an injected IPopoutTransport so it tests as pure logic. One open entry point resolves three exclusivity modes (Cooperative, Modal, Detached) and returns opaque handles.

Full API →

Key types

PopoutController
Concrete IPopoutService owning the arbitration state machine; delegates surface creation.
IPopoutService
Abstract service: open, close, toggle, isOpen, closeAll.
IPopoutTransport
Transport seam that creates, tears down, and tracks layer-shell surfaces.
PopoutRequest
Value type describing a popout to open (id, content, screen, anchor, exclusivity, scope).

Dependencies

See also

References