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

10

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

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

Скриншоты

Вот скриншот значка приложения, который он отображает на экране в Unity Launcher.

Вот скриншот того типа функциональности, который я хотел бы использовать (например, на значок почты: wiki.ubuntu. ком ).

Код проекта

Файл .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, и я нашел пару ссылок:

Изменить

После запуска 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 , расположенный в моем каталоге проектов Quickly в test/data/media/test.svg , до /usr/share/test/media/ . Значок .svg для приложения теперь отображается правильно на панели запуска Unity и в представлении alt-tab, однако по-прежнему нет видимого индикатора выполнения , как показано на скриншоте ниже.

Изменить 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. Скриншот интеграции с пусковой установкой можно увидеть ниже.

    
задан Kevin Gurney 13.04.2017 в 12:23
источник

1 ответ

8

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

    
ответ дан dobey 02.07.2012 в 14:46
источник