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
- Copier l'extension dans le répertoire des extensions utilisateur :
# 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/
-
Redémarrer GNOME Shell :
- Sur X11 :
Alt+F2, taperr, puisEntrée - Sur Wayland : Déconnexion/reconnexion
- Sur X11 :
-
Activer l'extension :
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 :
#!/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 :
chmod +x install-extension.sh
./install-extension.sh
Utilisation
Accès rapide depuis le panel
- Cliquez sur l'icône d'ordinateur dans le panel GNOME (en haut à droite)
- 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 :
~/app/pilot/pilot-v2/config.yaml~/.config/pilot/config.yaml/etc/pilot/config.yaml./pilot-v2/config.yaml
Pour modifier le chemin, utilisez les préférences de l'extension.
Dépannage
L'extension ne se charge pas
# 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
# 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 ou utilisez les préférences.
Développement
Tester les modifications
# 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
# 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