Badania podstawowe
Próbuję zaktualizować pasek postępu w programie uruchamiającym Unity dla prostej python/Gtkaplikacji utworzonej za pomocą Quicklywywołania test; jednak postępując zgodnie z instrukcjami w tym filmie , nie udało mi się zaktualizować paska postępu w programie Unityuruchamiającym . W filmie Unity Integration Quicklynie został użyty, więc sposób, w jaki aplikacja była zbudowana, był nieco inny, a kod użyty w filmie nie wydaje się działać poprawnie bez modyfikacji w domyślnej Quickly ubuntu-applicationaplikacji szablonu.
Zrzuty ekranu
Oto zrzut ekranu ikony aplikacji, która jest obecnie wyświetlana w Unity Launcher.

Oto zrzut ekranu z rodzaju paska postępu programu uruchamiającego Unity, który chciałbym (nałożony na ikonę poczty: wiki.ubuntu.com ).

Kod projektu
.zipPlik zawierający pliki projektu można znaleźć tutaj .
Spodziewane zachowanie
Spodziewałbym się, że powyższy kod pokaże pasek postępu, który jest w 75% całkowicie nałożony na ikonę aplikacji testowej w Unity Launcher , ale aplikacja działa tylko i nie wyświetla paska postępu po wykonaniu polecenia quickly run.
Badanie problemu
Uważam, że problem polega na tym, że nie otrzymuję poprawnie odwołania do głównego okna aplikacji, jednak nie jestem pewien, jak poprawnie rozwiązać ten problem. Uważam również, że wiersz: self.launcher = Unity.LauncherEntry.get_for_desktop_id("test.destkop")może być kolejnym źródłem komplikacji, ponieważ Quicklytworzy .desktop.inpliki, a nie zwykłe .desktoppliki, więc nie jestem pewien, czy może to również powodować problemy.
Być może innym źródłem problemu jest to, że nie do końca rozumiem różnicę między plikami .desktopa .desktop.inplikami. Czy ma sens tworzenie kopii test.desktop.inpliku i zmiana jego nazwy test.desktoporaz umieszczenie go /usr/share/applicationsw celu get_for_desktop_id("test,desktop")odniesienia do poprawnego .desktoppliku?
Powiązane linki badawcze
Chociaż nadal nie jestem w pełni świadomy różnicy między plikami .desktop i .desktop.in, przeprowadziłem badania dotyczące plików .desktop i natrafiłem na kilka linków:
- Pliki wpisów na pulpicie (library.gnome.org)
- Katalog instalacyjny plików pulpitu (askubuntu.com)
- Unity Launcher API (wiki.ubuntu.com)
- Pliki pulpitu: umieszczanie aplikacji w menu pulpitu (developer.gnome.org)
- Specyfikacja menu pulpitu (standard.freedesktop.org)
Edytować
Po uruchomieniu, python setup.py builda następnie /build/share/applicationsprzejściu i przeniesieniu zbudowanego test.desktoppliku do ~/.local/share/applications, a na końcu jego wykonaniu quickly run, wyświetlany jest tylko znak zapytania dla ikony, bez widocznego paska postępu .

Edytuj 2
Po dalszych badaniach wbudowanego .desktoppliku okazuje się, że wiersz:
Icon=/usr/share/test/media/test.svgw .desktoppliku wskazywał na plik ikony o nazwie, test.svgktóry nie istniał.
Aby rozwiązać ten problem, stworzyłem nowy folder o nazwie testw /usr/share/użyciu polecenia sudo mkdir test, a następnie utworzony kolejny wewnątrz folderu do folderu o nazwie testu mediaprzy użyciu polecenia sudo mkdir media, a następnie przeniosłem test.svgplik ikony znajdującej się w moim katalogu projektu szybko, w test/data/media/test.svgcelu /usr/share/test/media/. .svgIkona aplikacji wyświetla teraz poprawnie na pasku uruchamiania Unity i w widoku alt-tab, jednak nadal brak jest widoczny pasek postępu , jak pokazano na poniższym zrzucie ekranu.

Edytuj 3
Jak zauważył @dobey, w kodzie pliku TestWindow.py w wierszu była literówka:
self.launcher = Unity.LauncherEntry.get_for_desktop_id("test.destkop"),
gdzie test.destkoppowinien być test.desktop.
Zmieniłem tę literówkę i nie wystąpiły żadne widoczne zmiany, gdy aplikacja została wykonana przy użyciu quickly run. Jednak po dodaniu linii print('Integrating with launcher')do add_launcher_integration()nie było odpowiednie wyjście w terminalu, gdy aplikacja została uruchomiona, co wskazuje, że problem wydaje się, że add_launcher_integration()nie wydaje się być poprawnie po nazwie uruchamiania aplikacji.
Edytuj 4
Po dalszym badaniu okazuje się, że add_launcher_integration()tak naprawdę wywoływana jest przy uruchomieniu aplikacji. Z dodaniem linii:
os.system("clear")
przed linią
print("Integrating with launcher")
komunikat „Integracja z programem uruchamiającym” jest teraz wyświetlany w terminal.
Jednak nadal nie ma widocznego paska postępu w pasku uruchamiania Unity .
Edytuj 5
Po przebudowie Quicklyprojektu poprzez wykonanie python setup.py buildi przeniesienie zbudowany .desktopplików w Quicklyprojekcie znajduje się /build/share/applications/na ~/.local/share/applications, ikony aplikacji na pasku postępu i teraz wyświetla się poprawnie w Jedności wyrzutni kreskowego. Zrzut ekranu integracji programu uruchamiającego można zobaczyć poniżej.
