Investigación de fondo
Estoy intentando actualizar la barra de progreso dentro del iniciador de Unity para una python/Gtkaplicación simple creada usando Quicklyllamado test; sin embargo, siguiendo las instrucciones en este video , no he podido actualizar con éxito la barra de progreso en el Unityiniciador . En el video de Unity Integration, Quicklyno se usó, por lo que la forma en que se estructuraba la aplicación era ligeramente diferente, y el código utilizado en el video no parece funcionar correctamente sin modificaciones en una Quickly ubuntu-applicationaplicación de plantilla predeterminada .
Capturas de pantalla
Aquí hay una captura de pantalla del icono de la aplicación tal como se muestra actualmente en el Iniciador de Unity.

Aquí hay una captura de pantalla del tipo de funcionalidad de barra de progreso del iniciador de Unity que me gustaría (superpuesta en el icono de correo: wiki.ubuntu.com ).

Código de proyecto
Un .ziparchivo que contiene los archivos del proyecto se puede encontrar aquí .
Comportamiento esperado
Esperaría que el código anterior muestre una barra de progreso que está superpuesta al 75% en el ícono de la aplicación de prueba en Unity Launcher , pero la aplicación solo se ejecuta y no muestra ninguna barra de progreso cuando quickly runse ejecuta el comando .
Investigación de problemas
Creo que el problema es que no obtengo una referencia adecuada a la ventana principal de la aplicación, sin embargo, no estoy seguro de cómo solucionar este problema correctamente. También creo que la línea: self.launcher = Unity.LauncherEntry.get_for_desktop_id("test.destkop")puede ser otra fuente de complicaciones porque Quicklycrea .desktop.inarchivos en lugar de .desktoparchivos comunes , por lo que no estoy seguro de si eso podría estar causando problemas también.
Quizás, otra fuente del problema es que no entiendo completamente la diferencia entre .desktopy los .desktop.inarchivos. ¿Tiene sentido hacer una copia del test.desktop.inarchivo y cambiarle el nombre test.desktop, y colocarlo /usr/share/applicationspara get_for_desktop_id("test,desktop")que haga referencia al .desktoparchivo correcto ?
Enlaces de investigación relacionados
Aunque todavía no tengo clara la diferencia entre los archivos .desktop y .desktop.in, he investigado un poco sobre los archivos .desktop y he encontrado algunos enlaces:
- Archivos de entrada de escritorio (library.gnome.org)
- Directorio de instalación de archivos de escritorio (askubuntu.com)
- API de Unity Launcher (wiki.ubuntu.com)
- Archivos de escritorio: poner su aplicación en los menús de escritorio (developer.gnome.org)
- Especificación del menú del escritorio (standards.freedesktop.org)
Editar
Después de ejecutar python setup.py buildy luego navegar /build/share/applicationsy mover el test.desktoparchivo creado a ~/.local/share/applications, y finalmente ejecutarlo quickly run, solo se muestra un signo de interrogación para un icono, sin una barra de progreso visible .

Editar 2
Después de una investigación más a fondo del .desktoparchivo creado , resulta que la línea:
Icon=/usr/share/test/media/test.svgdentro del .desktoparchivo apuntaba a un archivo de icono llamado test.svgque no existía.
Con el fin de resolver este problema, he creado una nueva carpeta llamada testen el /usr/share/uso del comando sudo mkdir testy luego creó otro en el interior de la carpeta de prueba llamada mediausando el comando sudo mkdir media, y luego moví el test.svgarchivo de icono que se encuentra en mi directorio del proyecto rápidamente en test/data/media/test.svga /usr/share/test/media/. El .svgicono de la aplicación ahora se muestra correctamente en la barra de inicio de Unity y en la vista de pestaña alternativa, sin embargo, todavía no hay una barra de progreso visible como se muestra en la siguiente captura de pantalla.

Editar 3
Como señaló @dobey, había un error tipográfico en el código del archivo TestWindow.py en la línea:
self.launcher = Unity.LauncherEntry.get_for_desktop_id("test.destkop"),
donde test.destkopdebería estar test.desktop.
Cambié este error tipográfico y no se produjeron cambios visibles cuando la aplicación se ejecutó usando quickly run. Sin embargo, después de agregar la línea print('Integrating with launcher')a add_launcher_integration()no había salida correspondiente en el terminal cuando se ejecutó la aplicación, lo que indica que el problema parece ser que add_launcher_integration()no se llama correctamente cuando se inicia la aplicación.
Editar 4
Después de una investigación más profunda, resulta que add_launcher_integration()de hecho se llama cuando se inicia la aplicación. Con la adición de la línea:
os.system("clear")
antes de la línea
print("Integrating with launcher")
el mensaje "Integrando con el lanzador" ahora aparece en el terminal.
Sin embargo, todavía no hay una barra de progreso visible en la barra de inicio de Unity .
Editar 5
Después de la reconstrucción del Quicklyproyecto mediante la ejecución python setup.py buildy moviendo la construcción .desktopde archivos dentro del Quicklyproyecto ubicado en /build/share/applications/a ~/.local/share/applications, el icono de la aplicación y la barra de progreso muestra ahora correctamente en la Unidad lanzador bar. Una captura de pantalla de la integración del lanzador se puede ver a continuación.

fuente
