Badania podstawowe
Próbuję zaktualizować pasek postępu w programie uruchamiającym Unity dla prostej python/Gtk
aplikacji utworzonej za pomocą Quickly
wywołania test
; jednak postępując zgodnie z instrukcjami w tym filmie , nie udało mi się zaktualizować paska postępu w programie Unity
uruchamiającym . W filmie Unity Integration Quickly
nie 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-application
aplikacji 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
.zip
Plik 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ż Quickly
tworzy .desktop.in
pliki, a nie zwykłe .desktop
pliki, 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 .desktop
a .desktop.in
plikami. Czy ma sens tworzenie kopii test.desktop.in
pliku i zmiana jego nazwy test.desktop
oraz umieszczenie go /usr/share/applications
w celu get_for_desktop_id("test,desktop")
odniesienia do poprawnego .desktop
pliku?
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 build
a następnie /build/share/applications
przejściu i przeniesieniu zbudowanego test.desktop
pliku 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 .desktop
pliku okazuje się, że wiersz:
Icon=/usr/share/test/media/test.svg
w .desktop
pliku wskazywał na plik ikony o nazwie, test.svg
który nie istniał.
Aby rozwiązać ten problem, stworzyłem nowy folder o nazwie test
w /usr/share/
użyciu polecenia sudo mkdir test
, a następnie utworzony kolejny wewnątrz folderu do folderu o nazwie testu media
przy użyciu polecenia sudo mkdir media
, a następnie przeniosłem test.svg
plik ikony znajdującej się w moim katalogu projektu szybko, w test/data/media/test.svg
celu /usr/share/test/media/
. .svg
Ikona 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.destkop
powinien 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 Quickly
projektu poprzez wykonanie python setup.py build
i przeniesienie zbudowany .desktop
plików w Quickly
projekcie 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.