Hintergrundforschung
Ich versuche, den Fortschrittsbalken im Unity-Starter für eine einfache python/Gtk
Anwendung zu aktualisieren, die mit Quickly
aufgerufen erstellt wurde test
. Nach den Anweisungen in diesem Video konnte ich den Fortschrittsbalken im Unity
Launcher jedoch nicht erfolgreich aktualisieren . Im Unity Integration-Video wurde Quickly
es nicht verwendet, sodass die Struktur der Anwendung geringfügig anders war und der im Video verwendete Code ohne Änderung in einer Standardvorlagenanwendung nicht ordnungsgemäß zu funktionieren scheint Quickly ubuntu-application
.
Screenshots
Hier ist ein Screenshot des Anwendungssymbols, wie es derzeit im Unity Launcher angezeigt wird.
Hier ist ein Screenshot der Art von Unity Launcher-Fortschrittsbalkenfunktionalität, die ich möchte (überlagert mit dem Mail-Symbol: wiki.ubuntu.com ).
Projektnummer
Eine .zip
Datei mit den Projektdateien finden Sie hier .
Erwartetes Verhalten
Ich würde erwarten, dass der obige Code einen Fortschrittsbalken anzeigt , der zu 75% vollständig über dem Symbol für die Testanwendung im Unity Launcher liegt , aber die Anwendung wird nur ausgeführt und zeigt keinen Fortschrittsbalken an, wenn der Befehl quickly run
ausgeführt wird.
Problemuntersuchung
Ich glaube, dass das Problem darin besteht, dass ich keinen richtigen Verweis auf das Hauptfenster der Anwendung erhalte. Ich bin mir jedoch nicht sicher, wie ich dieses Problem richtig beheben kann. Ich glaube auch, dass die Zeile: self.launcher = Unity.LauncherEntry.get_for_desktop_id("test.destkop")
eine weitere Quelle für Komplikationen sein kann, da Dateien anstelle von normalen Dateien Quickly
erstellt .desktop.in
werden. Daher .desktop
bin ich mir nicht sicher, ob dies ebenfalls Probleme verursachen könnte.
Vielleicht ist eine andere Ursache des Problems, dass ich den Unterschied zwischen .desktop
und .desktop.in
Dateien nicht ganz verstehe . Ist es möglicherweise sinnvoll, eine Kopie der test.desktop.in
Datei zu erstellen, sie umzubenennen test.desktop
und zu platzieren /usr/share/applications
, um get_for_desktop_id("test,desktop")
auf die richtige .desktop
Datei zu verweisen ?
Verwandte Forschungslinks
Obwohl mir der Unterschied zwischen .desktop- und .desktop.in-Dateien immer noch nicht klar ist, habe ich einige Nachforschungen zu .desktop-Dateien angestellt und bin auf einige Links gestoßen:
- Desktop-Eintragsdateien (library.gnome.org)
- Installationsverzeichnis für Desktop-Dateien (askubuntu.com)
- Unity Launcher API (wiki.ubuntu.com)
- Desktop-Dateien: Fügen Sie Ihre Anwendung in die Desktop-Menüs ein (developer.gnome.org).
- Desktop-Menüspezifikation (standards.freedesktop.org)
Bearbeiten
Nach dem Ausführen python setup.py build
und anschließenden Navigieren /build/share/applications
und Verschieben der erstellten test.desktop
Datei zu ~/.local/share/applications
und dem endgültigen Ausführen quickly run
wird nur ein Fragezeichen für ein Symbol ohne sichtbaren Fortschrittsbalken angezeigt .
Bearbeiten 2
Nach weiteren Untersuchungen der erstellten .desktop
Datei stellt sich heraus, dass die Zeile:
Icon=/usr/share/test/media/test.svg
innerhalb der .desktop
Datei auf eine Symboldatei mit dem Namen zeigte, test.svg
die nicht vorhanden war.
Um dieses Problem zu beheben, habe ich einen neuen Ordner erstellt, der mit dem Befehl aufgerufen test
wurde /usr/share/
, sudo mkdir test
und dann einen weiteren Ordner innerhalb des Testordners erstellt, der media
mit dem Befehl aufgerufen sudo mkdir media
wurde. Anschließend habe ich die test.svg
Symboldatei in meinem Quickly-Projektverzeichnis test/data/media/test.svg
nach verschoben /usr/share/test/media/
. Das .svg
Symbol für die Anwendung wird jetzt ordnungsgemäß in der Unity-Startleiste und in der Alt-Tab-Ansicht angezeigt. Es ist jedoch noch keine Fortschrittsanzeige sichtbar, wie im folgenden Screenshot gezeigt.
Bearbeiten 3
Wie @dobey betonte, gab es einen Tippfehler im Code der Datei TestWindow.py in der Zeile:
self.launcher = Unity.LauncherEntry.get_for_desktop_id("test.destkop")
,
wo test.destkop
sollte sein test.desktop
.
Ich habe diesen Tippfehler geändert und es sind keine sichtbaren Änderungen aufgetreten, als die Anwendung mit ausgeführt wurde quickly run
. Nach dem Hinzufügen der Zeile print('Integrating with launcher')
zu add_launcher_integration()
gab es jedoch keine entsprechende Ausgabe im Terminal, als die Anwendung ausgeführt wurde, was darauf hinweist, dass das Problem darin zu bestehen scheint, dass add_launcher_integration()
es beim Start der Anwendung nicht richtig aufgerufen zu werden scheint.
Bearbeiten 4
Nach weiteren Untersuchungen stellt sich heraus, dass dies add_launcher_integration()
tatsächlich aufgerufen wird, wenn die Anwendung gestartet wird. Mit der Hinzufügung der Zeile:
os.system("clear")
vor der Linie
print("Integrating with launcher")
Die Meldung "Integration in Launcher" wird jetzt in der angezeigt terminal
.
In der Unity-Startleiste ist jedoch noch keine Fortschrittsanzeige sichtbar .
Bearbeiten 5
Nach dem erneuten Erstellen des Quickly
Projekts durch Ausführen python setup.py build
und Verschieben der erstellten .desktop
Datei innerhalb des Quickly
Projekts /build/share/applications/
in ~/.local/share/applications
werden das Anwendungssymbol und die Fortschrittsanzeige nun ordnungsgemäß in der Unity-Startleiste angezeigt. Ein Screenshot der Launcher-Integration ist unten zu sehen.