Sobre el proyecto

DesktopPanel es un panel de control de escritorio diseñado para una Raspberry Pi con la pantalla táctil oficial de RPi. Es un sucesor reestructurado del proyecto SmartBedroomPanel del autor y se distribuye como imagen Docker (mrtux/desktop-panel). Las notas de configuración cubren el control de la retroiluminación: una regla udev otorga acceso de escritura sin privilegios de root a las entradas sysfs de brillo de retroiluminación y bl_power. Si no se detecta ninguna placa conocida, el entorno sysfs de retroiluminación se simula en un directorio temporal, lo cual es útil para el desarrollo. Ejecutar con Docker requiere acceso elevado porque la aplicación accede a varios recursos del sistema. El contenedor espera un directorio de configuración montado como solo lectura en /app/configuration que contenga desktop-panel-config.json e issuelist.json, además de un directorio opcional de capturas de pantalla con permisos de escritura en /app/screenshots. El comando de ejemplo usa --privileged, --restart always, una variable de entorno TZ y montajes bind; el montaje de configuración aún permite que la aplicación reaccione a los cambios en los archivos JSON. La integración se basa principalmente en mensajes. Sobre AMQP, el acceso y las credenciales se configuran con amqp.host, amqp.user y amqp.passwd. Si amqp.declare es true, los recursos son declarados por el panel; de lo contrario, la configuración es externa. El panel escucha comandos en amqp.command_channel (por defecto command.DesktopPanel). Los comandos son objetos JSON con un identificador de comando y un objeto de argumentos; la implementación actual es solo de solicitud, sin un mecanismo genérico de respuesta RPC. Los comandos conocidos incluyen screenshot (almacena una imagen en el directorio de capturas de pantalla) y show page, que cambia a la página nombrada en el argumento page y admite go_back_if_current para desapilar la pila de navegación y block_input para prevenir clickjacking. Un canal de syslog puede mostrar mensajes críticos de syslog en la página System. Los mensajes se consumen de la cola nombrada en amqp.syslog_channel (sin valor por defecto; omitir para deshabilitar). Deben provenir del destino AMQP de syslog-ng, con toda la información en los encabezados de propiedades del mensaje AMQP (DATE, FACILITY, HOST/HOST_FROM, MESSAGE, PRIORITY, PROGRAM) y un cuerpo vacío. Solo la severidad error y superior es significativa; los filtros de syslog-ng o los bindings de RabbitMQ deberían enrutar solo esas severidades. El README recomienda una cola duradera dedicada (p. ej., syslog.DesktopPanel) vinculada al exchange de tipo topic de syslog-ng, con amqp.declare establecido en false cuando la cola se gestiona externamente, y proporciona un fragmento de JSON de configuración. Cuando llega un nuevo mensaje mientras la página System no está activa, el botón de la pestaña System se ilumina en rojo para crit/critical/alert/emerg/panic y en amarillo para error/err; la notificación se borra cuando se abre la página. Sobre MQTT, si mqtt.presence-topic está configurado, el estado de presencia se publica como texto de estado sin formato. El proyecto utiliza iconos gratuitos del Streamline Icons Pack y está licenciado bajo MIT (© 2021 Stefan Haun y colaboradores). Se incluye un flujo de trabajo de CodeQL para análisis estático.