Por que alguns aplicativos abertos aparecem como “pontos de interrogação” no iniciador do Unity?

21

Estou tendo um problema com alguns programas que têm lançadores em unidade, mas depois criam um ícone separado após o lançamento. É possível para o lançador rastrear as janelas que ele gera para se organizar melhor? Ou isso é um bug na própria Unity?

Pode não importar, mas este programa específico é um programa mono e o ícone gerado é listado como o painel.

    
por Andrew Redd 26.10.2011 / 19:01

3 respostas

23

O que está acontecendo

Problemas como esse estão relacionados à estrutura de correspondência de aplicativos do Unity. Para simplificar os detalhes técnicos, as janelas e aplicativos do programa são duas coisas separadas para o Ubuntu. O Ubuntu precisa "adivinhar" qual aplicativo possui uma janela específica. E, às vezes, esse palpite falha e um ponto de interrogação aparece no inicializador.

A falha pode ser causada por:

  1. Um erro no BAMF (a estrutura de correspondência de aplicativos mencionada acima).
  2. Uma descrição do aplicativo com defeito (também conhecido como arquivo '.desktop').
  3. A falta de qualquer descrição de aplicativo. Os executáveis ​​que iniciam janelas não possuem inerentemente esses metadados.

O aplicativo mostrado na pergunta (KeePass2) sofre de um problema do tipo 1 que foi informado ao localizador de erros apropriado .

Exemplos de problemas

Os exemplos abaixo são técnicos, voltados para programadores que desejam que seu próprio aplicativo seja exibido corretamente no iniciador do Ubuntu.

Problema 3 - Nenhuma descrição de aplicativo

Para que um aplicativo se integre ao Unity, ou seja, seja pesquisável no Dash e colocado no inicializador, ele precisa ter uma entrada na área de trabalho. Essas entradas são colocadas em /usr/share/applications/ , /usr/local/share/applications/ e $HOME/.local/share/applications/ (sendo as duas últimas para software de terceiros, em todo o sistema e apenas para usuário, respectivamente). Eles terminam com uma extensão .desktop e seguem este formato básico:

[Desktop Entry]
Type=Application
Name=My Application's Name
Icon=/file/path/of/my/icon
Exec=/file/path/of/my/executable

Esta entrada inicia um programa chamando o executável Exec . Sempre que o programa exibir uma janela ou caixa de diálogo, o Unity notará que seu executável "pertence" a esta descrição do aplicativo e usará os Name e Icon no inicializador.

Este é um exemplo barebones. A especificação formal abrange muitos recursos avançados.

Problema 2 - Descrição do aplicativo com defeito

Vamos supor que my_app.desktop exista em um diretório de aplicativos válido, mas:

  • /file/path/of/my/icon não existe no sistema de arquivos.
  • /file/path/of/my/icon não é uma imagem.
  • a entrada usa algumas sintaxes incorretas ou tags inválidas.

Em qualquer um dos casos acima, o Ubuntu não poderá listar adequadamente a janela do aplicativo no inicializador.

Problema 1 - Um erro no BAMF

A partir do Ubuntu 11.10, o BAMF possui vários bugs que impedem a correspondência correta de aplicativos. Armadilhas comuns (temporárias) incluem:

  • O caminho Exec é um link simbólico em vez de um arquivo normal
  • O executável é um script que inicia o executável principal.

Nesses casos, os programadores não têm outra opção senão usar uma solução alternativa, como remover a abstração de link simbólico ou vincular diretamente ao executável. Nenhum deles é exigido pela própria especificação de entrada da área de trabalho.

    
por Jjed 07.11.2011 / 03:12
1

A janela só pode ser correspondida ao aplicativo se a propriedade WM_CLASS tiver sido definida. Para fazer isso no X11 você usa:

XSetClassHint( display, window, &class_hints );

Você precisa passar um ponteiro para uma estrutura XClassHint com o campo 'res_name' e 'res_class'.

    
por Bram 10.08.2013 / 08:14
-1

Eu tive alguns problemas com o 16.04, incluindo os ícones acinzentados e, às vezes, o touchpad se tornava errático (Acer V15 nitro) e o centro de software (talvez outros ícones também) não abria do ícone (somente de um comando terminal) . Eu encontrei uma recomendação em algum lugar para desinstalar e reinstalar o software gnome. Desde que fiz isso, todo o sistema tem sido 100% estável, não há mais ícones acinzentados e funciona perfeitamente. Parecia assustador inicialmente quando eu reiniciei após essa mudança - muitas mensagens do sistema na reinicialização - por isso, é por sua conta e risco.

sudo apt-get autoremove gnome-software && sudo apt-get install gnome-software
    
por Steve 21.08.2016 / 09:50