#!/bin/sh
# mirada-session — arranca mirada (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`.
#
# CAMINO CANÓNICO (recomendado): el Ente `mirada-session` declarado en la
# Tarjeta Semilla de arje-zero (`03_ukupacha/arje/init/arje-zero/src/seed.rs::mirada_session_card`)
# levanta el compositor con estas mismas variables de entorno pero bajo
# supervisión del fractal — back-off automático ante crash y trazado por
# el bus de eventos. Este script queda como FALLBACK para hosts con DM
# externo (greetd, ly, sddm) o setups manuales que aún no migraron a
# arje-zero como PID 1.

# Si el DM no sembró XDG_RUNTIME_DIR (PAM sin pam_systemd), lo fijamos al
# estándar /run/user/<uid> para que el compositor y TODOS sus hijos (pata,
# mirada-ctl) compartan la misma ruta del socket de control. Sin esto, el
# socket de mirada-ctl quedaba en /tmp y nadie lo encontraba (workspaces/foco
# por la barra "no hacían nada").
[ -z "$XDG_RUNTIME_DIR" ] && export XDG_RUNTIME_DIR="/run/user/$(id -u)"

# Carmen es un compositor Wayland.
export XDG_SESSION_TYPE=wayland
export XDG_CURRENT_DESKTOP=mirada
export XDG_SESSION_DESKTOP=mirada

# 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

# Si el DM/TTY no corrió el chain de perfiles (/etc/profile, pam_env),
# XDG_DATA_DIRS llega vacío y se propaga a los hijos: dolphin/KIO no
# encuentran los .desktop de /usr/share/applications y «abrir con» sale con
# la lista vacía. Fijamos el default del freedesktop base-dir spec.
[ -z "${XDG_DATA_DIRS:-}" ] && export XDG_DATA_DIRS="/usr/local/share:/usr/share"

# Volcá el perfil ACTIVO a la config viva para arrancar coherente con él.
command -v wawa-panel >/dev/null 2>&1 && wawa-panel --apply-active || true

# El backend DRM toma la TTY entera. Los programas de arranque van en
# ~/.config/mirada/autostart (uno por línea).
#
# Bajo supervisión (reinicio + backoff): si el compositor cae, vuelve y
# restaura la sesión (session.ron) en vez de patearte a la TTY. El postmortem
# queda en el dir de debug. `MIRADA_SUPERVISE=0` vuelve al exec pelado.
# Fallback al binario directo si `mirada-supervise` no está instalado.
if command -v mirada-supervise >/dev/null 2>&1; then
    exec mirada-supervise --drm
else
    exec mirada-compositor --drm
fi
