Die betreffende Anwendung führt eine Aktion aus (hier Verbinden von Audio mit Netzwerkströmen) und wird minimiert ausgeführt, wenn diese Aktionen erfolgreich waren. Daher wird ein Statussymbol benötigt, um den Status der Verbindung anzuzeigen (z. B. VERBUNDEN / NICHT VERBUNDEN). Erst wenn Sie auf das Symbol klicken, wird das Anwendungsfenster geöffnet, in dem Sie auf weitere Optionen zugreifen können.
Mit Python 2.6 und pyGtk habe ich dies bequem mit gtk_status_icon realisiert . Ich habe die Anwendung absichtlich so geschrieben, dass sie auf möglichst vielen Distributionen läuft, einschließlich der verschiedenen Ubuntu-Versionen. Ich habe darauf geachtet, mögliche Abhängigkeiten erst zu verwenden, nachdem der Benutzer sie installiert hat.
Jetzt höre ich jedoch, dass gtk_status_icon in zukünftigen Ubuntu-Versionen nicht mehr unterstützt wird. Entwickler werden gebeten, stattdessen Anwendungsindikatoren zu verwenden. Was ist dann die beste Vorgehensweise, um sicherzustellen, dass:
- Die lokalen Symbole der Anwendung werden ordnungsgemäß angezeigt
- Die Anwendung wird weiterhin ausgeführt und zeigt ihre Symbole in zukünftigen Ubuntu-Versionen an.
- Die Anwendung wird auch ausgeführt und zeigt ihre Symbole in anderen Umgebungen an, in denen Indikator-Applet , Libappindicator und Python-Appindicator nicht bereitgestellt werden.
Anwendungsindikator-Fallback-Mechanismen für gtk_status_icon funktionieren nicht, wenn das Indikator-Applet nicht ausgeführt wird. Python-Interpreter werden nicht ausgeführt, wenn kein Appindicator- Modul zum Import vorhanden ist. Muss ich verschiedene Versionen für verschiedene Distributionen entwickeln oder gibt es einen besseren Weg, dies zu umgehen?
Wo finde ich eine andere Dokumentation zur Verwendung von ApplicationIndicator als im Beispiel im Ubuntu-Wiki ? Welche Befehle werden bereitgestellt, um zu überprüfen, ob das Anzeige-Applet ausgeführt wird, um zu vermeiden, dass unterschiedliche Quellcodes für Ubuntu-Distributionen im Vergleich zu Nicht-Ubuntu-Distributionen programmiert werden?
Ich habe eine hervorragende Lösung, die in StackApplet gut funktioniert hat : Ich habe eine funktionsäquivalente Version des
appindicator
Moduls erstellt, diegtk.StatusIcon
intern identische Funktionen bereitstellt, wenn das eigentliche Modul nicht vorhanden ist.Die Benutzung ist so einfach wie:
appindicator_replacement.py
Fügen Sie Ihrer Bewerbung Folgendes hinzu:
Das ist es! Jetzt läuft Ihre Anwendung perfekt mit oder ohne Unterstützung für AppIndicators. Es läuft sogar unter Windows, vorausgesetzt, Sie haben keinen anderen plattformspezifischen Code.
Hinweis: Die Datei ist unter der MIT-Lizenz veröffentlicht - Sie können sie also für so ziemlich alles verwenden.
quelle
Sie müssen Code für beide schreiben. Sie können das Vorhandensein von appindicator in Ihrem Python-Code mit etwas ähnlichem feststellen:
Verwenden Sie von dort aus have_appindicator, um zu entscheiden, ob Sie den appindicator-Code oder den gtk_status_icon-Code verwenden möchten.
Leider bedeutet dies auch, dass Sie sowohl Ubuntu als auch eine andere Umgebung zum Testen benötigen.
quelle
Auf diese Weise können Sie feststellen, ob das Indikator-Applet ausgeführt wird. Sie müssen sich keine Sorgen um Ubuntu 11.04 machen, da dies nicht der Fall sein wird. Es gibt kein Fallback-Szenario, da das Indikator-Applet eine obligatorische Komponente ist, die standardmäßig ausgeführt wird.
quelle
/usr/lib/x86_64-linux-gnu/indicator-messages/indicator-messages-service
Stattdessen gibt es viele Aufgaben.