feat(mirada): sesión de escritorio — autostart y conmutación de VT

Dos piezas para usar carmen como tu escritorio de verdad.

Conmutación de VT — `Ctrl+Alt+Fn` salta a otra TTY y vuelve sin romper
la sesión. El `SessionEvent` de `libseat` ahora hace trabajo de verdad:
- al ceder la VT, pausa el `DrmDevice` y suspende `libinput`; `render()`
  no vuelve a tocar la GPU mientras la sesión esté cedida (`active`).
- al recuperarla, reanuda `libinput`, reactiva el `DrmDevice`, llama a
  `DrmCompositor::reset_state` y repinta.
`DrmState` conserva ahora `drm` y un clon del contexto `libinput`.

Sesión — `~/.config/mirada/autostart` (un comando por línea, `#`
comenta) se lanza al arrancar el backend DRM, vía un `spawn_autostart`
que reusa `spawn_command`. Y `session/`: el script `mirada-session`
(fija el entorno XDG y exec del compositor) y `carmen.desktop` para
registrarlo en un gestor de login, más un `autostart.example`.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
sergio
2026-05-21 04:31:55 +00:00
parent 58e72c3d08
commit 5ede927d34
8 changed files with 172 additions and 8 deletions
+22
View File
@@ -0,0 +1,22 @@
#!/bin/sh
# mirada-session — arranca carmen (el compositor mirada) como una sesión
# de escritorio. Pensado para lanzarse desde una TTY o desde un gestor de
# login (greetd, ly, …).
#
# Instálalo en el PATH (p. ej. /usr/local/bin/mirada-session) junto al
# binario `mirada-compositor`.
# Carmen es un compositor Wayland.
export XDG_SESSION_TYPE=wayland
export XDG_CURRENT_DESKTOP=carmen
export XDG_SESSION_DESKTOP=carmen
# Que las apps GUI prefieran sus backends Wayland.
export MOZ_ENABLE_WAYLAND=1
export QT_QPA_PLATFORM="wayland;xcb"
export SDL_VIDEODRIVER=wayland
export _JAVA_AWT_WM_NONREPARENTING=1
# El backend DRM toma la TTY entera. Los programas de arranque van en
# ~/.config/mirada/autostart (uno por línea).
exec mirada-compositor --drm