gioser

tawasuyu/brahman

Rust 334TOML 129Markdown 39JSON 174745 Sutichaykuna

⎇ 51398f89cf364d786aaa9ddb20f69e6798844b35 crates/apps/mirada-compositor/README.md Markdown · 82 siq'ikuna · 2.7 KB Ñawpa willay ch'uya

fix(mirada-compositor): no pisar WAYLAND_DISPLAY antes de winit::init 51398f89c · sergio ·

1# mirada-compositor — el Cuerpo de carmen
2
3Un compositor Wayland teselante real, sobre [`smithay`]. Es el **Cuerpo**
4de la arquitectura Cerebro↔Cuerpo de `mirada` (ver
5`crates/modules/mirada/SDD.md`): habla el protocolo Wayland con los
6clientes, compone sus superficies y aplica la geometría que decide el
7Cerebro.
8
9Backend `winit`: corre **anidado** — una ventana dentro de tu sesión
10gráfica actual, X11 o Wayland. No toca DRM/KMS, así que es seguro de
11arrancar sin dejar la sesión.
12
13## Requisitos
14
15Hace falta una **sesión gráfica anfitriona** (X11 o Wayland) donde
16dibujar la ventana del compositor — es donde `winit` se anida. En un
17servidor *headless* (SSH a una caja sin escritorio, `XDG_SESSION_TYPE=tty`,
18sin `/dev/dri`) no hay dónde mostrar nada y el arranque aborta con un
19mensaje que lo explica.
20
21Para verlo en una caja headless: levanta un servidor X virtual y
22conéctate por VNC.
23
24```sh
25Xvfb :99 -screen 0 1280x800x24 &
26x11vnc -display :99 -localhost -nopw &        # luego túnel SSH al :5900
27DISPLAY=:99 cargo run -p mirada-compositor
28```
29
30El backend nativo DRM/KMS —que pintaría directo en la pantalla sin
31sesión anfitriona— está pendiente (ver el SDD), y de todos modos
32necesitaría un `/dev/dri`.
33
34## Dos modos
35
36- **Autónomo** (por defecto) — lleva un `Desktop` (de `mirada-brain`)
37  embebido. Es un compositor teselante completo en un solo proceso.
38
39  ```sh
40  cargo run -p mirada-compositor
41  ```
42
43- **Enlazado** — el Cuerpo escucha en un socket y la app `mirada` (el
44  Cerebro GPUI) se conecta y decide la geometría.
45
46  ```sh
47  # terminal 1 — el Cuerpo
48  MIRADA_SOCKET=/tmp/mirada.sock cargo run -p mirada-compositor
49  # terminal 2 — el Cerebro
50  MIRADA_SOCKET=/tmp/mirada.sock cargo run -p mirada
51  ```
52
53## Probarlo
54
55Al arrancar imprime el `WAYLAND_DISPLAY` que abrió. Lanza cualquier
56cliente Wayland contra él:
57
58```sh
59WAYLAND_DISPLAY=wayland-1 foot      # o weston-terminal, alacritty, …
60```
61
62Las ventanas se teselan solas. El teclado, con la ventana del compositor
63enfocada, maneja el escritorio con atajos `Super+…` (los que registra el
64Cerebro: foco `Super+j/k`, layout `Super+Tab`, escritorios `Super+1..9`).
65Cierra la ventana del compositor para salir.
66
67## Qué implementa
68
69`wl_compositor`, `xdg_shell` (toplevels y popups), `wl_shm`, `wl_seat`
70(teclado) y `wl_data_device` (selección). Composición con `GlesRenderer`.
71
72Reusa `mirada-body` para la contabilidad de salidas y superficies, y
73`mirada-link` para el cable hacia un Cerebro externo. Toda la lógica
74espacial es agnóstica de Wayland y vive en los crates de
75`crates/modules/mirada/`.
76
77## Pendiente
78
79Backend nativo DRM/libinput (de ventana anidada a sesión real),
80puntero/ratón completo y aislamiento de clientes. Ver el SDD.
81
82[`smithay`]: https://github.com/Smithay/smithay

README.md

mirada-compositor — el Cuerpo de carmen

Un compositor Wayland teselante real, sobre smithay. Es el Cuerpo de la arquitectura Cerebro↔Cuerpo de mirada (ver crates/modules/mirada/SDD.md): habla el protocolo Wayland con los clientes, compone sus superficies y aplica la geometría que decide el Cerebro.

Backend winit: corre anidado — una ventana dentro de tu sesión gráfica actual, X11 o Wayland. No toca DRM/KMS, así que es seguro de arrancar sin dejar la sesión.

Requisitos

Hace falta una sesión gráfica anfitriona (X11 o Wayland) donde dibujar la ventana del compositor — es donde winit se anida. En un servidor headless (SSH a una caja sin escritorio, XDG_SESSION_TYPE=tty, sin /dev/dri) no hay dónde mostrar nada y el arranque aborta con un mensaje que lo explica.

Para verlo en una caja headless: levanta un servidor X virtual y conéctate por VNC.

Xvfb :99 -screen 0 1280x800x24 &
x11vnc -display :99 -localhost -nopw &        # luego túnel SSH al :5900
DISPLAY=:99 cargo run -p mirada-compositor

El backend nativo DRM/KMS —que pintaría directo en la pantalla sin sesión anfitriona— está pendiente (ver el SDD), y de todos modos necesitaría un /dev/dri.

Dos modos

Probarlo

Al arrancar imprime el WAYLAND_DISPLAY que abrió. Lanza cualquier cliente Wayland contra él:

WAYLAND_DISPLAY=wayland-1 foot      # o weston-terminal, alacritty, …

Las ventanas se teselan solas. El teclado, con la ventana del compositor enfocada, maneja el escritorio con atajos Super+… (los que registra el Cerebro: foco Super+j/k, layout Super+Tab, escritorios Super+1..9). Cierra la ventana del compositor para salir.

Qué implementa

wl_compositor, xdg_shell (toplevels y popups), wl_shm, wl_seat (teclado) y wl_data_device (selección). Composición con GlesRenderer.

Reusa mirada-body para la contabilidad de salidas y superficies, y mirada-link para el cable hacia un Cerebro externo. Toda la lógica espacial es agnóstica de Wayland y vive en los crates de crates/modules/mirada/.

Pendiente

Backend nativo DRM/libinput (de ventana anidada a sesión real), puntero/ratón completo y aislamiento de clientes. Ver el SDD.