Фундаментальные исследования
Я пытаюсь обновить индикатор выполнения в панели запуска Unity для простого python/Gtkприложения, созданного с использованием Quicklynamed 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 пускового бара. Скриншот интеграции лаунчера можно увидеть ниже.
