Investigación de fondo
Estoy intentando actualizar la barra de progreso dentro del iniciador de Unity para una python/Gtk
aplicación simple creada usando Quickly
llamado test
; sin embargo, siguiendo las instrucciones en este video , no he podido actualizar con éxito la barra de progreso en el Unity
iniciador . En el video de Unity Integration, Quickly
no 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-application
aplicació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 .zip
archivo 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 run
se 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 Quickly
crea .desktop.in
archivos en lugar de .desktop
archivos 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 .desktop
y los .desktop.in
archivos. ¿Tiene sentido hacer una copia del test.desktop.in
archivo y cambiarle el nombre test.desktop
, y colocarlo /usr/share/applications
para get_for_desktop_id("test,desktop")
que haga referencia al .desktop
archivo 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 build
y luego navegar /build/share/applications
y mover el test.desktop
archivo 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 .desktop
archivo creado , resulta que la línea:
Icon=/usr/share/test/media/test.svg
dentro del .desktop
archivo apuntaba a un archivo de icono llamado test.svg
que no existía.
Con el fin de resolver este problema, he creado una nueva carpeta llamada test
en el /usr/share/
uso del comando sudo mkdir test
y luego creó otro en el interior de la carpeta de prueba llamada media
usando el comando sudo mkdir media
, y luego moví el test.svg
archivo de icono que se encuentra en mi directorio del proyecto rápidamente en test/data/media/test.svg
a /usr/share/test/media/
. El .svg
icono 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.destkop
deberí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 Quickly
proyecto mediante la ejecución python setup.py build
y moviendo la construcción .desktop
de archivos dentro del Quickly
proyecto 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