Recherche en arrière plan
J'essaie de mettre à jour la barre de progression dans le lanceur Unity pour une python/Gtkapplication simple créée en utilisant Quicklyappelé test; cependant, en suivant les instructions de cette vidéo , je n'ai pas réussi à mettre à jour la barre de progression dans le Unitylanceur . Dans la vidéo Unity Integration, Quicklyn'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-applicationapplication 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 .zipfichier 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 runest 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 Quicklycrée des .desktop.infichiers plutôt que des .desktopfichiers 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 .desktopet .desktop.in. Est-il possible de faire une copie du test.desktop.infichier, de le renommer test.desktopet de le placer /usr/share/applicationsafin get_for_desktop_id("test,desktop")de référencer le .desktopfichier 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/applicationset le déplacement du test.desktopfichier 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 .desktopfichier construit , il s'avère que la ligne:
Icon=/usr/share/test/media/test.svgdans le .desktopfichier pointait vers un fichier icône appelé test.svgqui 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.svgfichier d'icônes situé dans mon répertoire de projet Quickly à test/data/media/test.svgà /usr/share/test/media/. L' .svgicô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 Quicklyprojet en exécutant python setup.py buildet en déplaçant le construit .desktopfichier dans le Quicklyprojet 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.
