Как я заставляю индикатор выполнения средства запуска работать с моим приложением?

Фоновое исследование

Я пытаюсь обновить индикатор выполнения в средстве запуска Единицы для простого python/Gtk приложение создало использование Quickly названный test; однако, следуя инструкциям в этом видео, я не смог успешно обновить индикатор выполнения в Unity средство запуска. В видео Интеграции Единицы, Quickly не использовался, таким образом, способ, которым было структурировано приложение, немного отличался, и код, используемый в видео, кажется, не функционирует правильно без модификации в значении по умолчанию Quickly ubuntu-application шаблонное приложение.


Снимки экрана

Вот снимок экрана значка приложения, поскольку он в настоящее время отображается в Средстве запуска Единицы.

Blurry Application Icon Without a Visible Progress Bar

Вот снимок экрана вида функциональности индикатора выполнения средства запуска Единицы, которую я хотел бы (overlayed на почтовом значке: wiki.ubuntu.com).

Unity Launcher Progress Bar Functionality


Код проекта

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, только вопросительный знак для значка отображается без видимого индикатора выполнения.

Question mark for application icon displayed


Редактирование 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 значок для приложения теперь отображается правильно в панели средства запуска Единицы и в представлении alt-tab, однако нет все еще никакого видимого индикатора выполнения как показано в снимке экрана ниже.

Only application icon displayed


Редактирование 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.

Однако нет все еще никакого индикатора выполнения visisble в панели средства запуска Единицы.


Редактирование 5

После восстановления Quickly проект путем выполнения python setup.py build и перемещение созданного .desktop файл в Quickly проект, расположенный в /build/share/applications/ кому: ~/.local/share/applications, значок приложения и индикатор выполнения теперь отображаются правильно в панели средства запуска Единицы. Снимок экрана интеграции средства запуска виден ниже.

Application icon and progress bar displayed

10
задан 13 April 2017 в 15:23

1 ответ

Файл .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, чтобы увидеть. Он должен появиться на терминале при запуске.

0
ответ дан 13 April 2017 в 15:23

Другие вопросы по тегам:

Похожие вопросы: