Pesquisa de Antecedentes
Estou tentando atualizar a barra de progresso no iniciador do Unity para um python/Gtk
aplicativo simples criado usando o Quickly
chamado test
; no entanto, seguindo as instruções deste vídeo , não consegui atualizar com êxito a barra de progresso no Unity
iniciador . No vídeo do Unity Integration, Quickly
não foi usado; portanto, a maneira como o aplicativo foi estruturado era um pouco diferente, e o código usado no vídeo parece não funcionar corretamente sem modificação em um Quickly ubuntu-application
aplicativo de modelo padrão .
Screenshots
Aqui está uma captura de tela do ícone do aplicativo, conforme exibido no Unity Launcher.
Aqui está uma captura de tela do tipo de funcionalidade da barra de progresso do iniciador do Unity que eu gostaria (sobreposta no ícone do correio: wiki.ubuntu.com ).
Código do projeto
Um .zip
arquivo contendo os arquivos do projeto pode ser encontrado aqui .
Comportamento esperado
Eu esperaria que o código acima mostrasse uma barra de progresso 75% completa sobreposta no ícone do aplicativo de teste no Unity Launcher , mas o aplicativo é executado apenas e não exibe nenhuma barra de progresso quando o comando quickly run
é executado.
Investigação de Problemas
Acredito que o problema é que não estou obtendo uma referência adequada à janela principal do aplicativo, no entanto, não tenho certeza de como corrigir esse problema corretamente. Eu também acredito que a linha: self.launcher = Unity.LauncherEntry.get_for_desktop_id("test.destkop")
pode ser outra fonte de complicação porque Quickly
cria .desktop.in
arquivos em vez de .desktop
arquivos comuns , então não tenho certeza se isso também pode estar causando problemas.
Talvez, outra fonte do problema seja que eu não entendo completamente a diferença entre .desktop
e .desktop.in
arquivos. Será que faz sentido fazer uma cópia do test.desktop.in
arquivo e renomeá-lo test.desktop
e colocá-lo /usr/share/applications
em ordem para get_for_desktop_id("test,desktop")
fazer referência ao .desktop
arquivo correto ?
Links de pesquisa relacionados
Embora ainda não esteja claro a diferença entre os arquivos .desktop e .desktop.in, pesquisei sobre os arquivos .desktop e deparei com alguns links:
- Arquivos de entrada da área de trabalho (library.gnome.org)
- Diretório de instalação de arquivos da área de trabalho (askubuntu.com)
- API do Unity Launcher (wiki.ubuntu.com)
- Arquivos da área de trabalho: colocando seu aplicativo nos menus da área de trabalho (developer.gnome.org)
- Especificação de menu da área de trabalho (standards.freedesktop.org)
Editar
Depois de executar python setup.py build
e, em seguida, navegar /build/share/applications
e mover o test.desktop
arquivo criado para ~/.local/share/applications
, e finalmente executar quickly run
, apenas um ponto de interrogação para um ícone está sendo exibido, sem barra de progresso visível .
Editar 2
Após uma investigação mais aprofundada do .desktop
arquivo criado , verifica-se que a linha:
Icon=/usr/share/test/media/test.svg
dentro do .desktop
arquivo estava apontando para um arquivo de ícone chamado test.svg
que não existia.
A fim de resolver este problema, eu criei uma nova pasta chamada test
em /usr/share/
utilizar o comando sudo mkdir test
e, em seguida, criou um outro dentro da pasta da pasta de teste chamado media
usando o comando sudo mkdir media
, e depois me mudei o test.svg
arquivo de ícone localizado no meu diretório de projeto rapidamente em test/data/media/test.svg
para /usr/share/test/media/
. O .svg
ícone do aplicativo agora é exibido corretamente na barra do iniciador do Unity e na visualização da guia alt, no entanto , ainda não existe uma barra de progresso visível, como mostra a captura de tela abaixo.
Editar 3
Como @dobey, apontou, houve um erro de digitação no código do arquivo TestWindow.py na linha:
self.launcher = Unity.LauncherEntry.get_for_desktop_id("test.destkop")
,
onde test.destkop
deveria estar test.desktop
.
Alterei esse erro de digitação e nenhuma alteração visível ocorreu quando o aplicativo foi executado quickly run
. No entanto, depois de adicionar a linha print('Integrating with launcher')
para add_launcher_integration()
não havia saída correspondente no terminal quando o aplicativo foi executado, indicando que o problema parece ser que add_launcher_integration()
não parece ser chamado corretamente quando o aplicativo é iniciado.
Editar 4
Após uma investigação mais aprofundada, acontece que add_launcher_integration()
é chamado de fato quando o aplicativo é iniciado. Com a adição da linha:
os.system("clear")
antes da linha
print("Integrating with launcher")
a mensagem "Integrando ao iniciador" agora é exibida no terminal
.
No entanto, ainda não há uma barra de progresso visível na barra do iniciador do Unity .
Editar 5
Depois de reconstruir o Quickly
projeto executando python setup.py build
e movendo o .desktop
arquivo construído dentro do Quickly
projeto localizado em /build/share/applications/
para ~/.local/share/applications
, o ícone do aplicativo e a barra de progresso agora são exibidos corretamente na barra do iniciador do Unity. Uma captura de tela da integração do iniciador pode ser vista abaixo.