Фонове дослідження
Я намагаюся оновити панель прогресу в панелі запуску Unity для простого python/Gtk
додатка, створеного за допомогою Quickly
виклику test
; однак, дотримуючись вказівок цього відео , я не зміг успішно оновити панель прогресу в Unity
пусковій установці . У відео Unity Integration відео 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)
- API Unity Launcher (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 пускового бару. Скріншот інтеграції запуску можна побачити нижче.