feat(mirada): acople del shell — ventana-dock al pie de la pantalla
Fase 2 del plan «shell»: carmen reconoce la ventana del shell y le
reserva su sitio, en vez de teselarla como una más.
Una ventana cuyo `app_id` es `carmen.shell` no entra en el teselado:
carmen le reserva una franja de 40 px al pie de la salida, la dimensiona
y la fija ahí, y la compone sobre todas las demás. El Cerebro tesela el
resto de ventanas en el área que queda.
- `mirada-protocol`: nuevo `BodyEvent::OutputResized { id, w, h }` — el
Cerebro cambia el área útil de una salida **sin** perder el escritorio
que muestra (a diferencia de quitar y volver a añadir la salida — que,
de paso, era un bug latente al redimensionar la ventana winit).
- `mirada-brain`: `Desktop` atiende `OutputResized` (test nuevo).
- `mirada-body`: `BodyState::resize_output`.
- `mirada-compositor`: `ManagedWindow.is_shell`, `App.output_size`,
`dock_shell`/`output_changed`; `register_toplevel` no registra el
shell en el Cerebro; al cerrarse libera la franja. El shell se compone
y se enfoca con el ratón aunque no viva en el Cerebro; no lleva marco.
El backend winit usa ahora `resize_output` al redimensionar.
GPUI no habla `wlr-layer-shell`, así que el acople es por `app_id`.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
@@ -82,6 +82,11 @@ pub enum BodyEvent {
|
||||
OutputAdded { id: OutputId, width: i32, height: i32 },
|
||||
/// Desapareció un monitor.
|
||||
OutputRemoved { id: OutputId },
|
||||
/// Cambió el área útil de un monitor — porque se redimensionó la
|
||||
/// ventana anfitriona, o porque el shell reservó o liberó su franja.
|
||||
/// El escritorio que muestra **no** cambia (a diferencia de quitar y
|
||||
/// volver a añadir la salida).
|
||||
OutputResized { id: OutputId, width: i32, height: i32 },
|
||||
/// Un cliente creó una ventana de nivel superior.
|
||||
WindowOpened { id: WindowId, app_id: String, title: String },
|
||||
/// Una ventana se cerró (por el cliente o tras un [`BrainCommand::Close`]).
|
||||
|
||||
Reference in New Issue
Block a user