Фундаментальные исследования
Я пытаюсь обновить индикатор выполнения в панели запуска Unity для простого python/Gtk
приложения, созданного с использованием Quickly
named test
; однако, следуя инструкциям в этом видео , я не смог успешно обновить индикатор выполнения в панели Unity
запуска . В видео интеграции Unity Quickly
он не использовался, поэтому способ структурирования приложения несколько отличался, и код, используемый в видео, не работает должным образом без изменения в Quickly ubuntu-application
шаблонном приложении по умолчанию .
Скриншоты
Вот снимок экрана со значком приложения, который в данный момент отображается в Unity Launcher.
Вот снимок экрана с той функциональностью индикатора выполнения программы запуска Unity, которая мне нужна (наложена на значок почты: wiki.ubuntu.com ).
Код проекта
.zip
Файл , содержащий файлы проекта можно найти здесь .
Ожидаемое поведение
Я ожидаю, что в приведенном выше коде будет отображаться индикатор выполнения, заполненный на 75% на значке тестового приложения в Unity Launcher , но приложение запускается и не отображает индикатор выполнения при выполнении команды quickly run
.
Проблемное расследование
Я считаю, что проблема заключается в том, что я не получаю ссылку на главное окно приложения, однако я не уверен, как правильно решить эту проблему. Я также считаю, что строка: self.launcher = Unity.LauncherEntry.get_for_desktop_id("test.destkop")
может быть еще одним источником осложнений, поскольку Quickly
создает .desktop.in
файлы, а не обычные .desktop
файлы, поэтому я не уверен, что это может также вызвать проблемы.
Возможно, еще один источник проблемы заключается в том, что я не совсем понимаю разницу между файлами .desktop
и .desktop.in
файлами. Возможно ли имеет смысл сделать копию test.desktop.in
файла и переименовать его test.desktop
и поместить в него /usr/share/applications
для get_for_desktop_id("test,desktop")
ссылки на правильный .desktop
файл?
Связанные исследования Ссылки
Хотя мне все еще не ясно, в чем разница между файлами .desktop и .desktop.in, я провёл некоторое исследование файлов .desktop и наткнулся на пару ссылок:
- Входные файлы рабочего стола (library.gnome.org)
- Каталог установки файлов рабочего стола (askubuntu.com)
- Unity Launcher API (wiki.ubuntu.com)
- Файлы рабочего стола: размещение вашего приложения в меню рабочего стола (developer.gnome.org)
- Спецификация меню рабочего стола (standard.freedesktop.org)
редактировать
После запуска, python setup.py build
а затем /build/share/applications
перехода к встроенному test.desktop
файлу и его перемещения ~/.local/share/applications
и, наконец, выполнения quickly run
, отображается только вопросительный знак для значка без видимой строки прогресса .
Редактировать 2
После дальнейшего изучения встроенного .desktop
файла выясняется, что строка:
Icon=/usr/share/test/media/test.svg
внутри .desktop
файла указывала на файл значка с именем, test.svg
который не существовал.
Для того , чтобы решить эту проблему, я создал новую папку с именем test
в /usr/share/
использовании команды , sudo mkdir test
а затем создали другую папку внутри тестовой папки с media
помощью команды sudo mkdir media
, а затем я переместил test.svg
файл значок , расположенный в моем каталоге проекта Быстро на test/data/media/test.svg
к /usr/share/test/media/
. .svg
Значок приложения теперь отображается правильно в пусковой панели Unity и в представлении закладками альт, однако до сих пор не видно индикатор , как показано на скриншоте ниже.
Редактировать 3
Как указал @dobey, в коде файла TestWindow.py в строке была опечатка:
self.launcher = Unity.LauncherEntry.get_for_desktop_id("test.destkop")
,
где test.destkop
, должно быть test.desktop
.
Я изменил эту опечатку, и никаких видимых изменений не произошло, когда приложение было выполнено с использованием quickly run
. Однако после добавления строки print('Integrating with launcher')
к add_launcher_integration()
соответствующему выводу в терминале при запуске приложения не было никаких указаний, что указывает на то, что проблема, похоже, add_launcher_integration()
заключается в том, что при запуске приложения кажется, что он вызывается неправильно.
Редактировать 4
После дальнейшего расследования выясняется, что add_launcher_integration()
на самом деле вызывается при запуске приложения. С добавлением строки:
os.system("clear")
до линии
print("Integrating with launcher")
сообщение «Интеграция с лаунчером» теперь отображается в terminal
.
Тем не менее, в панели запуска Unity до сих пор не отображается индикатор выполнения .
Редактировать 5
После восстановления Quickly
проекта путем выполнения python setup.py build
и перемещения встроенного .desktop
файла внутри Quickly
проекта , расположенного по адресу , /build/share/applications/
чтобы ~/.local/share/applications
, значок приложения и прогресс - бар теперь отображается правильно в Unity пускового бара. Скриншот интеграции лаунчера можно увидеть ниже.