À propos du projet

DesktopPanel est un panneau de contrôle de bureau conçu pour un Raspberry Pi avec l'écran tactile officiel RPi. Il s'agit d'un successeur restructuré du projet SmartBedroomPanel de l'auteur et est distribué comme image Docker (mrtux/desktop-panel). Les notes d'installation couvrent le contrôle du rétroéclairage : une règle udev accorde un accès en écriture non-root aux entrées sysfs de luminosité et bl_power. Si aucune carte connue n'est détectée, l'environnement sysfs du rétroéclairage est simulé dans un répertoire temporaire, utile pour le développement. L'exécution avec Docker nécessite des privilèges élevés car l'application touche plusieurs ressources système. Le conteneur attend un répertoire de configuration monté en lecture seule à /app/configuration contenant desktop-panel-config.json et issuelist.json, plus un répertoire optionnel en écriture pour les captures d'écran à /app/screenshots. La commande exemple utilise --privileged, --restart always, une variable d'environnement TZ et des montages bind ; le montage de configuration permet toujours à l'application de réagir aux changements de fichiers JSON. L'intégration est principalement basée sur les messages. Sur AMQP, l'accès et les identifiants sont définis avec amqp.host, amqp.user et amqp.passwd. Si amqp.declare est vrai, les ressources sont déclarées par le panneau, sinon la configuration est externe. Le panneau écoute les commandes sur amqp.command_channel (défaut command.DesktopPanel). Les commandes sont des objets JSON avec un identifiant de commande et un objet arguments ; l'implémentation actuelle est uniquement en requête sans mécanisme de réponse RPC générique. Les commandes connues incluent screenshot (stocke une image dans le répertoire de captures) et show page, qui bascule vers la page nommée dans l'argument page et prend en charge go_back_if_current pour dépiler la pile de navigation et block_input pour empêcher le clickjacking. Un canal syslog peut afficher les messages syslog critiques sur la page Système. Les messages sont consommés depuis la file nommée dans amqp.syslog_channel (pas de défaut ; omettre pour désactiver). Ils doivent provenir de la destination AMQP de syslog-ng, avec toutes les informations dans les en-têtes de propriétés du message AMQP (DATE, FACILITY, HOST/HOST_FROM, MESSAGE, PRIORITY, PROGRAM) et un corps vide. Seules les sévérités d'erreur et supérieures sont significatives ; les filtres syslog-ng ou les liaisons RabbitMQ doivent router uniquement ces sévérités. Le README recommande une file durable dédiée (par exemple syslog.DesktopPanel) liée à l'échange de sujets syslog-ng, avec amqp.declare défini sur false lorsque la file est gérée en externe, et donne un extrait de configuration JSON. Lorsqu'un nouveau message arrive alors que la page Système n'est pas active, le bouton de l'onglet Système s'allume en rouge pour crit/critical/alert/emerg/panic et en jaune pour error/err ; la notification s'efface lorsque la page est ouverte. Sur MQTT, si mqtt.presence-topic est configuré, le statut de présence est publié comme texte de statut brut. Le projet utilise des icônes gratuites du Streamline Icons Pack et est sous licence MIT (© 2021 Stefan Haun et contributeurs). Un workflow CodeQL est inclus pour l'analyse statique.