3dc85ebdcd
Stack de display extraído del monorepo: compositor teselante (Cuerpo smithay + Cerebro WM agnóstico), greeter PAM, portal XDG, CLI de control. Llimphi se consume por git desde su repo publicado; las hojas compartidas (format, auth-core, rimay-localize, wawa-config, app-bus) y el widget menubar van vendorizados. Sin el asistente IA (pluma-llm) ni la barra web wasm — el compositor no los necesita. cargo check --workspace pasa (18 crates, 0 warn). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
39 lines
1.5 KiB
Markdown
39 lines
1.5 KiB
Markdown
# app-bus — bus de eventos in-proc para apps Llimphi
|
|
|
|
Bus de **publish/subscribe** tipado, síncrono y en memoria, para coordinar apps
|
|
dentro del mismo proceso. Cubre tres familias de eventos transversales: **foco**
|
|
(qué app/ventana lo tiene), **navegación** (abrir/cerrar/enfocar una app o ruta)
|
|
y **notificaciones** efímeras.
|
|
|
|
## Qué expone
|
|
|
|
- `AppBus` — handle compartible (`Clone`, internamente `Arc<RwLock<…>>`).
|
|
- `Event` — enum transversal: `FocusChanged` / `Navigate` / `CloseApp` / `Notify`.
|
|
- `NotifyLevel` — `Info` / `Warn` / `Error`.
|
|
- `Subscription` — guard RAII: al soltarlo se cancela la suscripción.
|
|
- `publish(Event)` entrega de forma síncrona a todos los suscriptores; entrega
|
|
anidada si un callback publica desde su propio handler.
|
|
|
|
## No-objetivos
|
|
|
|
- No es un bus interproceso ni de red (eso es Akasha / app-channel).
|
|
- No persiste eventos ni garantiza entrega tras reinicio.
|
|
- No ordena por prioridad.
|
|
|
|
## Estado (2026-05-31)
|
|
|
|
### Hecho
|
|
- Bus pub/sub completo: `publish`, `subscribe`, cancelación por guard RAII.
|
|
- Enum `Event` con foco/navegación/cierre/notificaciones.
|
|
- Consumido por `launcher-llimphi` (dispara navegación/lanzamiento).
|
|
|
|
### Pendiente
|
|
- Adaptador multiproceso (hoy estrictamente in-proc).
|
|
- Entrega diferida / cola (hoy reentrancia anidada síncrona).
|
|
- Filtrado por tipo de evento en `subscribe` (hoy el callback filtra).
|
|
|
|
## Lugar en el repo
|
|
|
|
`shared/app-bus` — canal in-proc de grano fino. El plano de control a más alto
|
|
nivel es `shared/sandokan` (ver su SDD.md).
|