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:
- Um erro no BAMF (a estrutura de correspondência de aplicativos mencionada acima).
- Uma descrição do aplicativo com defeito (também conhecido como arquivo '.desktop').
- 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.