Recherche en arrière plan
J'essaie de mettre à jour la barre de progression dans le lanceur Unity pour une python/Gtk
application simple créée en utilisant Quickly
appelé test
; cependant, en suivant les instructions de cette vidéo , je n'ai pas réussi à mettre à jour la barre de progression dans le Unity
lanceur . Dans la vidéo Unity Integration, Quickly
n'a pas été utilisé, donc la façon dont l'application a été structurée était légèrement différente, et le code utilisé dans la vidéo ne semble pas fonctionner correctement sans modification dans une Quickly ubuntu-application
application de modèle par défaut .
Captures d'écran
Voici une capture d'écran de l'icône de l'application telle qu'elle est actuellement affichée dans le lanceur Unity.
Voici une capture d'écran du type de fonctionnalité de barre de progression du lanceur Unity que je souhaiterais (superposé sur l'icône de messagerie: wiki.ubuntu.com ).
Code de projet
Un .zip
fichier contenant les fichiers du projet peut être trouvé ici .
Comportement attendu
Je m'attendrais à ce que le code ci-dessus affiche une barre de progression qui est à 75% entièrement superposée sur l'icône de l'application de test dans Unity Launcher , mais l'application ne s'exécute et n'affiche aucune barre de progression lorsque la commande quickly run
est exécutée.
Enquête sur les problèmes
Je crois que le problème est que je n'obtiens pas correctement une référence à la fenêtre principale de l'application, cependant, je ne sais pas comment résoudre correctement ce problème. Je crois également que la ligne: self.launcher = Unity.LauncherEntry.get_for_desktop_id("test.destkop")
peut être une autre source de complication car Quickly
crée des .desktop.in
fichiers plutôt que des .desktop
fichiers ordinaires , donc je ne sais pas si cela pourrait également causer des problèmes.
Peut-être, une autre source du problème est que je ne comprends pas entièrement la différence entre les fichiers .desktop
et .desktop.in
. Est-il possible de faire une copie du test.desktop.in
fichier, de le renommer test.desktop
et de le placer /usr/share/applications
afin get_for_desktop_id("test,desktop")
de référencer le .desktop
fichier correct ?
Liens de recherche connexes
Bien que je ne sois toujours pas clair sur la différence entre les fichiers .desktop et .desktop.in, j'ai fait quelques recherches sur les fichiers .desktop et j'ai rencontré quelques liens:
- Fichiers d'entrée de bureau (library.gnome.org)
- Répertoire d'installation des fichiers de bureau (askubuntu.com)
- API Unity Launcher (wiki.ubuntu.com)
- Fichiers de bureau: placer votre application dans les menus du bureau (developer.gnome.org)
- Spécifications du menu du bureau (standards.freedesktop.org)
Éditer
Après l'exécution python setup.py build
, puis la navigation /build/share/applications
et le déplacement du test.desktop
fichier créé vers ~/.local/share/applications
, et enfin l'exécution quickly run
, seul un point d'interrogation pour une icône est affiché, sans barre de progression visible .
Modifier 2
Après une enquête plus approfondie du .desktop
fichier construit , il s'avère que la ligne:
Icon=/usr/share/test/media/test.svg
dans le .desktop
fichier pointait vers un fichier icône appelé test.svg
qui n'existait pas.
Afin de résoudre ce problème, j'ai créé un nouveau dossier appelé test
à l' /usr/share/
aide de la commande sudo mkdir test
, puis créé un autre dossier à l'intérieur du dossier de test appelé media
à l'aide de la commande sudo mkdir media
, puis j'ai déplacé le test.svg
fichier d'icônes situé dans mon répertoire de projet Quickly à test/data/media/test.svg
à /usr/share/test/media/
. L' .svg
icône de l'application s'affiche désormais correctement dans la barre de lancement Unity et dans la vue Alt-Tab, mais il n'y a toujours pas de barre de progression visible, comme indiqué dans la capture d'écran ci-dessous.
Modifier 3
Comme @dobey l'a souligné, il y avait une faute de frappe dans le code du fichier TestWindow.py à la ligne:
self.launcher = Unity.LauncherEntry.get_for_desktop_id("test.destkop")
,
où test.destkop
, devrait être test.desktop
.
J'ai changé cette faute de frappe et aucun changement visible ne s'est produit lors de l'exécution de l'application à l'aide de quickly run
. Cependant, après avoir ajouté la ligne print('Integrating with launcher')
à add_launcher_integration()
il n'y avait pas de sortie correspondante dans le terminal lorsque l'application a été exécuté, ce qui indique que le problème semble être que add_launcher_integration()
ne semble pas être appelé correctement lorsque l'application démarre.
Modifier 4
Après une enquête plus approfondie, il s'avère que add_launcher_integration()
c'est en fait appelé lorsque l'application démarre. Avec l'ajout de la ligne:
os.system("clear")
avant la ligne
print("Integrating with launcher")
le message "Intégration avec le lanceur" s'affiche maintenant dans le terminal
.
Cependant, il n'y a toujours pas de barre de progression visible dans la barre de lancement Unity .
Modifier 5
Après la reconstruction du Quickly
projet en exécutant python setup.py build
et en déplaçant le construit .desktop
fichier dans le Quickly
projet situé à /build/share/applications/
à ~/.local/share/applications
, l'icône de l' application et la barre de progression affiche maintenant correctement dans le lanceur Unity bar. Une capture d'écran de l'intégration du lanceur peut être vue ci-dessous.