Я пытаюсь обновить индикатор выполнения в средстве запуска Единицы для простого python/Gtk
приложение создало использование Quickly
названный test
; однако, следуя инструкциям в этом видео, я не смог успешно обновить индикатор выполнения в Unity
средство запуска. В видео Интеграции Единицы, Quickly
не использовался, таким образом, способ, которым было структурировано приложение, немного отличался, и код, используемый в видео, кажется, не функционирует правильно без модификации в значении по умолчанию Quickly ubuntu-application
шаблонное приложение.
Вот снимок экрана значка приложения, поскольку он в настоящее время отображается в Средстве запуска Единицы.
Вот снимок экрана вида функциональности индикатора выполнения средства запуска Единицы, которую я хотел бы (overlayed на почтовом значке: wiki.ubuntu.com).
A .zip
файл, содержащий файлы проекта, может быть найден здесь.
Я ожидал бы, что вышеупомянутый код покажет индикатор выполнения, который является 75%-м полным overlayed на значке для тестового приложения в Средстве запуска Единицы, но приложение только выполняет и не отображает индикатора выполнения когда команда 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 файлах, и я столкнулся с несколькими ссылками:
После выполнения python setup.py build
и затем навигация к /build/share/applications
и перемещение созданного test.desktop
файл к ~/.local/share/applications
, и наконец выполнение quickly run
, только вопросительный знак для значка отображается без видимого индикатора выполнения.
После дальнейшего расследования созданного .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
значок для приложения теперь отображается правильно в панели средства запуска Единицы и в представлении alt-tab, однако нет все еще никакого видимого индикатора выполнения как показано в снимке экрана ниже.
Как @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()
кажется, не называют правильно, когда приложение запускается.
После дальнейшего расследования это оказывается этим add_launcher_integration()
на самом деле назван, когда приложение запускается. С добавлением строки:
os.system("clear")
до строки
print("Integrating with launcher")
сообщение, "Интегрирующееся со средством запуска" теперь, отображается в terminal
.
Однако нет все еще никакого индикатора выполнения visisble в панели средства запуска Единицы.
После восстановления Quickly
проект путем выполнения python setup.py build
и перемещение созданного .desktop
файл в Quickly
проект, расположенный в /build/share/applications/
кому: ~/.local/share/applications
, значок приложения и индикатор выполнения теперь отображаются правильно в панели средства запуска Единицы. Снимок экрана интеграции средства запуска виден ниже.
Файл .desktop должен быть установлен в том месте, где об этом знает библиотека bamf
.
Вы должны быть в состоянии провести тестирование, скопировав встроенный файл .desktop (который должен быть создан из .desktop.in), в вашу папку ~/.local/share/applications
и запустив update-desktop-database ~/.local/share/applications
, хотя запуск этой команды может не потребоваться если ваше приложение не обрабатывает MIME-типы.
Разница между .desktop и .desktop.in заключается в том, что .desktop.in настроен для перевода и обрабатывается intltool во время сборки, чтобы вставить переводы, создавая файл .desktop из. файл desktop.in.
Также я только что заметил опечатку в вашем коде:
self.launcher = Unity.LauncherEntry.get_for_desktop_id("test.destkop")
Обратите внимание на «destkop» и «desktop», как и должно быть. Возможно, это так, если это не ошибка повторного набора. Предполагая, что ваш код на самом деле выполняется, это проблема. Если он не запущен, то это проблема. Вы можете добавить print('Integrating with launcher')
в функцию add_launcher_integration, чтобы увидеть. Он должен появиться на терминале при запуске.