Pesquisa de antecedentes
Estou tentando atualizar a barra de progresso no iniciador do Unity para um aplicativo python/Gtk
simples criado usando Quickly
chamado test
; no entanto, seguindo as instruções em este vídeo , < strong> Não consegui atualizar com êxito a barra de progresso no Unity
launcher .
No vídeo Unity Integration, Quickly
não foi usado, então a maneira como o aplicativo foi estruturado foi um pouco diferente, e o código usado no vídeo parece não funcionar adequadamente sem modificação em um aplicativo padrão Quickly ubuntu-application
template. / p>
Screenshots
Aqui está uma captura de tela do ícone do aplicativo, conforme exibido atualmente no Unity Launcher.
Aqui está uma captura de tela do tipo de funcionalidade da barra de progresso do iniciador do Unity que gostaria de ter (sobreposta no ícone de email: wiki.ubuntu. com ).
Código do Projeto
Um arquivo .zip
contendo os arquivos do projeto pode ser encontrado aqui .
Comportamento esperado
Espero que o código acima mostre uma barra de progresso 75% completa sobreposta ao ícone do aplicativo de teste no Unity Launcher , mas o aplicativo só é executado 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 corretamente uma referência à janela principal do aplicativo, no entanto, não tenho certeza de como corrigir adequadamente esse problema. 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 arquivos .desktop.in
em vez de arquivos .desktop
comuns, então não tenho certeza se isso pode estar causando problemas também.
Talvez, outra fonte do problema seja que não entendo completamente a diferença entre os arquivos .desktop
e .desktop.in
. Faz sentido fazer uma cópia do arquivo test.desktop.in
e renomeá-lo como test.desktop
e colocá-lo em /usr/share/applications
para que get_for_desktop_id("test,desktop")
faça referência ao arquivo .desktop
correto?
Links de pesquisa relacionados
Embora ainda não esteja claro a diferença entre os arquivos .desktop e .desktop.in, fiz algumas pesquisas sobre arquivos .desktop e encontrei alguns links:
Editar
Após executar python setup.py build
e, em seguida, navegar para /build/share/applications
e mover o arquivo test.desktop
incorporado para ~/.local/share/applications
e, finalmente, executar quickly run
, apenas um ponto de interrogação para um ícone será exibido, nenhuma barra de progresso visível .
Editar 2
Após uma investigação mais detalhada do arquivo .desktop
construído, a linha:
Icon=/usr/share/test/media/test.svg
dentro do arquivo .desktop
estava apontando para um arquivo de ícone chamado test.svg
que não existia.
Para resolver esse problema, criei uma nova pasta chamada test
in /usr/share/
usando o comando sudo mkdir test
e criei outra pasta dentro da pasta de teste chamada media
usando o comando sudo mkdir media
, e, em seguida, movi o arquivo de ícone test.svg
localizado no meu diretório de projeto Rápido em test/data/media/test.svg
to /usr/share/test/media/
. O ícone .svg
do aplicativo agora é exibido corretamente na barra do iniciador do Unity e na visualização do separador alt, no entanto, ainda não há barra de progresso visível , conforme mostrado na 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
, deve ser test.desktop
.
Alterei este erro de digitação e nenhuma alteração visível ocorreu quando o aplicativo foi executado usando quickly run
. No entanto, após adicionar a linha print('Integrating with launcher')
a add_launcher_integration()
, não houve 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 investigações posteriores, verifica-se que add_launcher_integration()
é de fato chamado quando o aplicativo é iniciado. Com a adição da linha:
os.system("clear")
antes da linha
print("Integrating with launcher")
a mensagem "Integrating with launcher" agora é exibida no terminal
.
No entanto, ainda não há barra de progresso visível na barra de inicialização do Unity .
Editar 5
Depois de reconstruir o projeto Quickly
executando python setup.py build
e movendo o arquivo .desktop
incorporado dentro do projeto Quickly
localizado em /build/share/applications/
to ~/.local/share/applications
, o ícone do aplicativo e a barra de progresso são exibidos corretamente em a barra de iniciação do Unity. Uma captura de tela da integração do lançador pode ser vista abaixo.