# Pilot Control - GNOME Shell Extension Extension GNOME Shell pour contrôler Pilot V2 (agent MQTT pour Home Assistant) directement depuis votre environnement de bureau. ## Fonctionnalités - **Contrôle du service systemd** : Démarrer, arrêter, redémarrer le service Pilot V2 - **Gestion de la télémétrie** : Activer/désactiver les métriques système individuellement - **Configuration des commandes** : Gérer la liste des commandes MQTT autorisées - **Édition simplifiée** : Modifier les paramètres sans éditer manuellement le YAML - **Interface intuitive** : Icône dans le panel GNOME avec menu rapide et fenêtre de contrôle complète ## Prérequis - GNOME Shell 45 ou supérieur - Pilot V2 installé et configuré - Service systemd `mqtt_pilot.service` (user service) - GTK4 et libadwaita ## Structure des fichiers ``` gnome-pilot-extension/ ├── metadata.json # Métadonnées de l'extension ├── extension.js # Point d'entrée principal ├── prefs.js # Fenêtre de préférences ├── yamlConfig.js # Module de lecture/écriture YAML ├── serviceManager.js # Gestion du service systemd ├── stylesheet.css # Styles CSS ├── ui/ │ ├── pilotWindow.js # Fenêtre principale │ ├── metricEditDialog.js # Dialogue d'édition des métriques │ └── commandEditDialog.js # Dialogue d'édition des commandes └── README.md ``` ## Installation ### Méthode 1 : Installation manuelle 1. **Copier l'extension dans le répertoire des extensions utilisateur** : ```bash # Depuis le répertoire du projet Pilot mkdir -p ~/.local/share/gnome-shell/extensions/pilot-control@gnome-shell-extensions cp -r gnome-pilot-extension/* ~/.local/share/gnome-shell/extensions/pilot-control@gnome-shell-extensions/ ``` 2. **Redémarrer GNOME Shell** : - Sur X11 : `Alt+F2`, taper `r`, puis `Entrée` - Sur Wayland : Déconnexion/reconnexion 3. **Activer l'extension** : ```bash gnome-extensions enable pilot-control@gnome-shell-extensions ``` Ou via l'application Extensions (GNOME Extensions). ### Méthode 2 : Script d'installation automatique Créez un script d'installation : ```bash #!/bin/bash # install-extension.sh EXTENSION_UUID="pilot-control@gnome-shell-extensions" EXTENSION_DIR="$HOME/.local/share/gnome-shell/extensions/$EXTENSION_UUID" echo "Installing Pilot Control extension..." # Créer le répertoire mkdir -p "$EXTENSION_DIR" # Copier les fichiers cp -r gnome-pilot-extension/* "$EXTENSION_DIR/" # Vérifier l'installation if [ -f "$EXTENSION_DIR/metadata.json" ]; then echo "✓ Extension installed successfully" echo " Location: $EXTENSION_DIR" echo "" echo "Next steps:" echo "1. Restart GNOME Shell (Alt+F2, type 'r', Enter on X11)" echo "2. Enable the extension:" echo " gnome-extensions enable $EXTENSION_UUID" else echo "✗ Installation failed" exit 1 fi ``` Rendre le script exécutable et l'exécuter : ```bash chmod +x install-extension.sh ./install-extension.sh ``` ## Utilisation ### Accès rapide depuis le panel 1. Cliquez sur l'icône d'ordinateur dans le panel GNOME (en haut à droite) 2. Le menu affiche : - **Status du service** (Running/Stopped) - **Actions rapides** : Start, Stop, Restart - **Open Control Panel** : Ouvre la fenêtre complète ### Fenêtre de contrôle principale La fenêtre principale est divisée en 3 sections : #### 1. Service Control - **Service Status** : Switch pour démarrer/arrêter le service - **Auto-start Service** : Enable/disable au démarrage du système - **Restart Service** : Redémarrer pour appliquer les changements #### 2. Telemetry Metrics - **Enable Telemetry** : Switch global pour toute la télémétrie - Liste des métriques individuelles : - Switch pour activer/désactiver chaque métrique - Bouton "..." pour éditer les paramètres (nom, interval, etc.) #### 3. Commands - **Enable Commands** : Switch global pour les commandes MQTT - **Allowed Commands** : Gérer la liste des commandes autorisées - shutdown, reboot, sleep, hibernate, screen ### Édition des métriques Cliquez sur le bouton "..." à côté d'une métrique pour modifier : - **Enabled** : Activer/désactiver - **Display Name** : Nom affiché dans Home Assistant - **Unique ID** : Identifiant unique - **Update Interval** : Intervalle de mise à jour (en secondes) ### Édition des commandes autorisées Cliquez sur "Allowed Commands" pour : - Sélectionner les commandes à autoriser via MQTT - Voir la description de chaque commande - Sauvegarder les modifications ## Sauvegarde et rechargement - **Sauvegarde automatique** : Lors de chaque modification, une sauvegarde du config.yaml est créée (config.yaml.backup_TIMESTAMP) - **Rechargement du service** : Après sauvegarde, le service est automatiquement redémarré pour appliquer les changements - **Bouton Refresh** : Recharge la configuration depuis le fichier YAML ## Configuration Par défaut, l'extension cherche le fichier de configuration dans : 1. `~/app/pilot/pilot-v2/config.yaml` 2. `~/.config/pilot/config.yaml` 3. `/etc/pilot/config.yaml` 4. `./pilot-v2/config.yaml` Pour modifier le chemin, utilisez les préférences de l'extension. ## Dépannage ### L'extension ne se charge pas ```bash # Vérifier les logs journalctl -f -o cat /usr/bin/gnome-shell # Vérifier que l'extension est bien installée gnome-extensions list | grep pilot # Vérifier les erreurs gnome-extensions show pilot-control@gnome-shell-extensions ``` ### Le service ne démarre pas ```bash # Vérifier le status du service systemctl --user status mqtt_pilot.service # Vérifier les logs journalctl --user -u mqtt_pilot.service -n 50 ``` ### Problèmes de permissions Si les commandes systemctl ne fonctionnent pas, vérifiez que le service est bien un service utilisateur (user service) et non un service système. ### Fichier config.yaml non trouvé Modifiez le chemin dans [yamlConfig.js:25-32](gnome-pilot-extension/yamlConfig.js#L25-L32) ou utilisez les préférences. ## Développement ### Tester les modifications ```bash # Recharger l'extension après modifications gnome-extensions disable pilot-control@gnome-shell-extensions gnome-extensions enable pilot-control@gnome-shell-extensions # Sur X11, recharger GNOME Shell # Alt+F2, 'r', Entrée ``` ### Consulter les logs ```bash # Logs en temps réel journalctl -f -o cat /usr/bin/gnome-shell | grep -i pilot # Ou via Looking Glass (Alt+F2, 'lg') ``` ### Structure du code - **extension.js** : Crée le bouton panel et gère le cycle de vie - **ui/pilotWindow.js** : Fenêtre principale avec 3 sections - **yamlConfig.js** : Parser/writer YAML simple - **serviceManager.js** : Wrapper systemctl - **ui/*Dialog.js** : Dialogues d'édition ## Limitations connues (V1) - Parser YAML simple (ne gère que la structure de config.yaml) - Pas de validation avancée des entrées - Pas de support pour les configurations complexes (listes imbriquées, etc.) - Nécessite un redémarrage du service pour appliquer les changements ## Améliorations futures - Support de plusieurs instances de Pilot - Gestion des logs en temps réel - Notifications pour les événements importants - Support des thèmes sombres/clairs - Validation avancée des entrées - Backup/restore de configurations ## Licence Même licence que le projet Pilot ## Auteur Extension créée pour simplifier la gestion de Pilot V2 depuis GNOME Shell