Componentes Clave del Sistema Gráfico: ¿Qué son y Por Qué los Usamos?

Explicación clara y concisa de Xorg, LightDM, Slick Greeter, XFCE 4, Openbox, Polkit e Inotify en Debian 13

<- Volver a Arquitectura General (index.html)

En Linux el sistema gráfico es modular: en lugar de ser un único bloque cerrado, se divide en Servidor Gráfico (Xorg), Gestor de Inicio de Sesión (LightDM + Slick Greeter) y Entorno de Escritorio / Gestor de Ventanas (XFCE 4 vs Openbox). Esa modularidad es exactamente la que aprovechamos en NA-SA Video Capture para darle al administrador un escritorio completo y al operario un modo kiosco blindado y ultrarrápido sobre la misma PC.

1

Cómo Encajan las Piezas en Orden de Arranque

Desde que el equipo enciende hasta que se muestra la imagen de las cámaras en pantalla, cada componente cumple una única responsabilidad bien delimitada y le pasa el control al siguiente:

1. Xorg (X11) Servidor Gráfico Habla con la GPU NVIDIA, el monitor, teclado y mouse. Sin DPMS / Sin Blanking 2. LightDM Gestor de Inicio de Sesión + Slick Greeter Pantalla visual de Login LD_PRELOAD filtro español Valida clave y consulta AccountsService / .dmrc 3A. XFCE 4 (Si entra admin) Escritorio Completo • Gestor de ventanas xfwm4 • Panel superior, menús y Terminal • Explorador Thunar (control total) 3B. Openbox (Si entra nasa) Gestor de Ventanas Kiosco • Sin escritorio, sin barras ni íconos • Fuerza fullscreen sin bordes • Lanza Watchdog nasa-video-kiosk Mantenimiento / Dev CMake / deploy_kiosk.sh Gestión y limpieza de /datos/NA-SA_Video App nasa_video (Qt6) + Panel Salida (GTK3/F1) + Polkit (Apagar sin root) + Guardián Inotify (/datos)
Cadena de responsabilidad: Xorg provee el lienzo gráfico -> LightDM + Slick Greeter autentican al usuario -> AccountsService elige entre XFCE 4 (admin) u Openbox (nasa).
2

Los 10 Componentes Principales: ¿Qué es cada uno y Por qué está ahí?

1. Xorg (Servidor X11)
Base Gráfica y Comunicación con Hardware
Servidor Display
¿Qué es?

Es el motor gráfico base de Linux que controla directamente la placa de video NVIDIA, dibuja píxeles en el monitor y captura los eventos físicos del teclado y mouse.

¿Por qué lo usamos?

Porque tiene soporte 100% maduro para el driver propietario de NVIDIA (CUDA Zero-Copy + NVDEC), para el SDK de la capturadora Magewell y permite controlar por código qué ventana va al frente (XRaiseWindow) y desactivar a nivel global el apagado de pantalla (DPMS false).

Configuración: /etc/X11/xorg.conf.d/10-nasa-no-blanking.conf
5. XFCE 4 (+ xfwm4 y Thunar)
Entorno de Escritorio Completo para admin
Sesión Admin
¿Qué es?

Es el entorno de escritorio completo de Debian que incluye barra de tareas, menú de aplicaciones, gestor de ventanas (xfwm4), gestor de energía y el explorador de archivos Thunar.

¿Por qué lo usamos para admin?

Porque las tareas de mantenimiento, compilación C++ y gestión de archivos en /datos requieren un escritorio completo, ágil y cómodo, sin la sobrecarga pesada de GNOME o KDE. Además, xfwm4 permite fijar vblank_mode=xpresent para una compatibilidad perfecta con NVIDIA.

Configuración: /usr/share/xsessions/xfce.desktop y xfce4-power-manager.xml
6. Openbox
Gestor de Ventanas (Window Manager) para nasa
Sesión Kiosco
¿Qué es?

Es únicamente un gestor de ventanas (no tiene barra de tareas, ni íconos de escritorio, ni explorador de archivos). Solo se encarga de posicionar ventanas, darles foco y aplicar reglas definidas en un archivo XML.

¿Por qué lo usamos para nasa?

Es la pieza central del Kiosco: si no hubiera gestor de ventanas, los diálogos secundarios de la app (Panel Virtual PTZ, Reproductor, Guardar imagen) no tendrían barra para moverse ni foco adecuado. Si usáramos XFCE, el operario podría salirse al sistema. Con Openbox bloqueamos todo y dejamos solo la app en pantalla completa y sus diálogos hijos arriba (<layer>above</layer>).

Configuración: /etc/xdg/nasa-video-kiosk/rc.xml y menu.xml
7. Lanzador Watchdog
Script de Arranque y Auto-Recuperación del Kiosco
Alta Disponibilidad
¿Qué es?

Es el script (/usr/local/bin/nasa-video-kiosk-session) que Openbox ejecuta automáticamente apenas inicia la sesión del usuario nasa.

¿Por qué lo usamos?

Prepara las variables de entorno (NASA_KIOSK_MODE=1), apaga el protector de pantalla de X11 y mantiene a nasa_video dentro de un bucle vigilado: si la aplicación llegara a cerrarse por cualquier fallo inesperado, la vuelve a abrir automáticamente en 1 segundo.

Archivo: /usr/local/bin/nasa-video-kiosk-session y log en ~nasa/.local/state/nasa-video/kiosk.log
8. Panel de Sesión Kiosco
Menú y Diálogos de Apagado / Reinicio / Logout
Control de Salida
¿Qué es?

Un programa ligero en Python 3 + GTK3 + libxfce4ui-2 (/usr/local/bin/nasa-video-kiosk-panel), complementado con las acciones del menú Sistema (tecla F1) dentro de la propia aplicación Qt6.

¿Por qué lo usamos?

Como en Openbox no existe el botón de apagado del escritorio, este componente brinda al operario una forma limpia, segura y con confirmación visual (al pulsar F1 o Ctrl+Alt+Supr) para Cerrar sesión, Reiniciar o Apagar, avisándole antes al Watchdog (STOP_FLAG) para que no relance la app.

Archivos: /usr/local/bin/nasa-video-kiosk-panel y MainWindow.cpp
9. Polkit + systemd-logind
Autorización de Energía sin Contraseña de Root
Permisos y Energía
¿Qué son?

systemd-logind administra las sesiones de usuario y el apagado/reinicio del equipo, mientras que Polkit es el árbitro de seguridad que decide si un usuario sin privilegios tiene permiso para ejecutar una acción del sistema.

¿Por qué los usamos?

El usuario nasa no es administrador (no tiene sudo por seguridad). Gracias a una regla específica de Polkit, le damos permiso únicamente para apagar y reiniciar el equipo sin pedir contraseña, manteniendo bloqueado cualquier otro permiso administrativo.

Configuración: /etc/polkit-1/rules.d/60-nasa-kiosk-power.rules
10. Guardián Inotify (/datos)
Protección Automática Contra Borrado de Videos
Integridad de Datos
¿Qué es?

Un servicio de sistema (nasa-datos-guard.service) escrito en Python 3 que utiliza la interfaz inotify del kernel Linux para detectar en milisegundos cada vez que un archivo se termina de escribir en /datos.

¿Por qué lo usamos?

En Linux, si un usuario tiene permiso para crear un archivo en una carpeta, normalmente también puede borrarlo. Este guardián escucha el evento IN_CLOSE_WRITE y apenas nasa termina de grabar un video o guardar una medición, cambia su dueño a admin:nasa (0644) en carpetas con sticky bit (3775), impidiendo que nasa pueda borrarlo o modificarlo.

Archivos: /usr/local/bin/nasa-datos-guard y /etc/systemd/system/nasa-datos-guard.service
3

Resumen de Decisiones: ¿Por qué esta combinación y no otra?

Decisión en el Proyecto Alternativa Descartada Por qué nuestra elección es superior para NASA Video
Usar Xorg (X11) Wayland En Wayland los clientes no pueden posicionar ni elevar ventanas modales globalmente (XRaiseWindow), y la interoperabilidad directa CUDA-OpenGL + Magewell + captura de teclado global es mucho más estable y predecible sobre Xorg.
Usar Openbox en la sesión nasa Usar XFCE recortado o lanzar la app sin Window Manager Recortar XFCE deja huecos por donde abrir paneles o atajos; y lanzar sin Window Manager rompe las barras de título y el foco de las ventanas hijas (Panel Virtual PTZ, Reproductor, Guardar archivo). Openbox resuelve ambos problemas con un solo archivo XML.
Mantener XFCE 4 en la sesión admin Dejar solo consola (SSH/TTY) para el administrador El administrador en planta puede necesitar revisar videos grabados en el propio monitor con Thunar, probar la interfaz en modo ventana o compilar localmente con todas las comodidades gráficas.
Sesión Xorg Única (allow-user-switching=false) Permitir múltiples sesiones gráficas simultáneas (VT7, VT8) Si quedan dos sesiones Xorg abiertas a la vez, la sesión en segundo plano puede retener el descriptor de la capturadora Magewell, el puerto serie RS-485 o contextos CUDA de NVIDIA. Forzar sesión única garantiza que quien inicia sesión tiene el 100% del hardware.
Guardián inotify + Sticky Bit en /datos Permisos estáticos estándar de carpetas Linux Con permisos estándar, quien tiene permiso de escritura en una carpeta para crear un video nuevo también puede borrar los videos que él mismo creó. El cambio automático de propietario al cerrar el archivo (IN_CLOSE_WRITE -> admin:nasa 0644) logra un verdadero modo "Grabar y Leer sí, Borrar nunca" para el operario.