L'application en question effectue certaines actions (ici la connexion audio aux flux réseau) et s'exécute de manière minimale si ces actions ont réussi. Par conséquent, une icône d'état est nécessaire pour afficher l'état de la connexion (par exemple CONNECTED / DISCONNECTED). Ce n'est qu'en cliquant sur l'icône que la fenêtre de l'application s'ouvrira pour donner accès à d'autres options.
En utilisant Python 2.6 et pyGtk, j'ai réalisé cela en utilisant gtk_status_icon . J'ai délibérément écrit l'application pour qu'elle fonctionne sur autant de distributions que possible, y compris les différentes versions d'Ubuntu. J'ai pris soin d'utiliser les dépendances possibles uniquement après que l'utilisateur les a installées.
Cependant, j'entends maintenant que gtk_status_icon ne sera plus pris en charge dans les futures versions d'Ubuntu. Les développeurs sont invités à utiliser les indicateurs d'application à la place. Quelle est alors la meilleure pratique pour s'assurer que:
- Les icônes locales de l'application s'affichent correctement
- L'application continuera de fonctionner et affichera ses icônes dans les futures versions d'Ubuntu.
- L'application s'exécutera également et affichera ses icônes dans d'autres environnements où indicateur-applet , libappindicator et python-appindicator ne sont pas fournis.
Les mécanismes de secours des indicateurs d'application vers gtk_status_icon ne fonctionneront pas si l' indicateur-applet n'est pas en cours d'exécution. Les interprètes Python ne s'exécuteront pas s'il n'y avait pas de module d' indicateur à partir duquel importer. Dois-je développer différentes versions pour différentes distributions ou existe-t-il un meilleur moyen de contourner cela.
Où puis-je trouver une documentation sur la façon d'utiliser ApplicationIndicator autrement que dans l'exemple donné dans le wiki Ubuntu ? Quelles commandes sont fournies pour vérifier si l'indicateur-applet est en cours d'exécution pour éviter de programmer différents codes source pour les distributions Ubuntu et non Ubuntu?
J'ai une excellente solution qui a bien fonctionné dans StackApplet - J'ai créé une version fonctionnellement équivalente du
appindicator
module qui utilise engtk.StatusIcon
interne pour fournir des fonctionnalités identiques lorsque le vrai module n'existe pas.Son utilisation est aussi simple que:
appindicator_replacement.py
Ajout de ce qui suit à votre application:
C'est ça! Désormais, votre application fonctionnera parfaitement avec ou sans prise en charge d'AppIndicators. Il s'exécutera même sous Windows, en supposant que vous n'avez pas d'autre code spécifique à la plate-forme.
Remarque: le fichier est publié sous la licence MIT - vous pouvez donc l'utiliser à peu près pour n'importe quoi.
la source
Vous devrez écrire du code pour les deux. Vous pouvez détecter la présence d'appindicateur dans votre code Python en utilisant quelque chose de similaire à:
À partir de là, utilisez have_appindicator pour décider si vous devez utiliser le code appindicator ou le code gtk_status_icon.
Malheureusement, cela signifie également que vous devrez avoir à la fois un Ubuntu et un autre environnement pour tester.
la source
De cette façon, vous pouvez détecter si l'applet indicateur est en cours d'exécution. Vous n'avez pas à vous soucier d'Ubuntu 11.04 car ce ne sera pas le cas. Il n'y a pas de scénario de secours car indicateur-applet est un composant obligatoire, exécuté par défaut.
la source
/usr/lib/x86_64-linux-gnu/indicator-messages/indicator-messages-service
tâches à la place.