Entregando um ícone de aplicativo Linux sem o instalador / gerenciador de pacotes

1

Histórico:

Eu quero:

  1. Entregue um aplicativo como um TAR simples que os usuários extraem e executam
  2. Para que o aplicativo tenha um ícone de aplicativo adequado.

Nenhum gerenciador de pacotes, nenhum sudo, nenhum script de instalação.

Eu vejo no padrão e vários artigos que os ícones de aplicativos exigem um arquivo .desktop que precisa dos caminhos absolutos para o executável (ugh) e ícone do aplicativo. Eu também vejo que o Ubuntu Unity (talvez outros) suporta .desktop arquivos em ~/.local/share/applications

O Windows suporta isso incorporando ícones em executáveis. O Mac OS X possui uma estrutura de diretórios relativa para aplicativos que inclui o ícone.

Solução "Hackish":

Minha solução "hackish" é, na inicialização do aplicativo, detectar se myApp.desktop file existe em ~/.local/share/applications/ e, se não, gravá-la (incluindo o caminho absoluto completo para executável e ícone), iniciar um novo processo myApp e sair .

A esperança é que o novo processo myApp capte o ícone do aplicativo. e às vezes faz.

O problema:

Esse problema é, eu tenho que sleep 2 segundos antes de lançar o novo processo. Se eu fizer isso, o ícone é escolhido. Se não tiver, não há ícone para meu aplicativo.

Eu tentei recarregar o cache de ícone do GTK em vez de dormir (com gtk-update-icon-cache /usr/share/icons/hicolor ), mas isso não funciona.

Alguém sabe como posso evitar esse atraso e garantir que o arquivo .desktop recém-escrito seja retirado? (Eu estou lavando e fechando o arquivo.) Ou ter uma idéia melhor do que a minha solução hackea?

Atualização: Interessante, testando um script simples que grava o arquivo .desktop (manualmente ou com xdg-desktop-menu ) e inicia o aplicativo, ele também precisa de um atraso de 2 segundos ou o ícone não será exibido. Fascinante.

    
por Jeff Ward 16.09.2015 / 18:02

1 resposta

1

Use gtk_window_set_icon ou semelhante (há uma variante _from_file e Integração Glade).

Sem raiz, não acho que você tenha acesso ao cache de ícones, e o carregamento oportuno do arquivo da área de trabalho não parece ser um método confiável como você descobriu.

    
por 17.09.2015 / 06:53

Tags