Como obter um arquivo *.desktop para iniciar o aplicativo e exibir o nome e o ícone do aplicativo na área de trabalho e em/usr/share/applications/?

Como obter um arquivo *.desktop para iniciar o aplicativo e exibir o nome e o ícone do aplicativo na área de trabalho e em/usr/share/applications/?

Ubuntu Bionic Beaver 18.04.3 Nautilus 3.26.4 (Arquivos)

Os arquivos *.desktop na área de trabalho ou em ~/bin aparecem com oaplicativoícone e o nome do arquivo são substituídos pelo valor da chave Name do arquivo. Clicar no ícone inicia o aplicativo associado.

Eu tenho dois arquivos - free42dec.desktop e free42bin.desktop - para iniciar a emulação Free42 da calculadora reversa polonesa HP42s. Mas no Nautilus (Arquivos), esses arquivos ainda aparecem como nomes completos e o ícone de texto genérico, em vez de Free42 Decimal e Free42 Binary, com os ícones de calculadora apropriados. Outra estranheza é que abrir as Propriedades desses arquivos mostra apenas plain-vanilla na guia Básico, mas outros arquivos *.desktop que se comportam corretamente mostram o valor da chave Exec na guia Básico.

Não serei o primeiro a ter esse problema com arquivos *.desktop, mas nenhuma combinação de termos de pesquisa me dará a resposta. Tentei vários remédios sugeridos, mas nenhum funcionou. Então, em desespero, aqui está o texto de um desses arquivos (o outro é semelhante):

[Desktop Entry]
Version=2.5.17
Name=Free42 Decimal
GenericName=Calculator
Comment=HP42s calculator using decimal number calculations.
Exec=free42dec -skin Realistic
Path=/usr/local/bin
Icon=/usr/share/icons/free42/free42dec.png
Terminal=false
Type=Application
Categories=Utility;Application;

##Define Actions
Actions=Quit;Free42_Binary;

[Desktop Action Quit]
Name=Quit
# Kill all free42bin or free42dec instances currently running
# Exec=pkill free42*
# Kill only free42dec instances
Exec=pkill free42dec
OnlyShowIn=Unity;

[Desktop Action Free42_Binary]
Name=Free42 Binary
# You can start the alternative calc from the right-click menu
Exec=free42bin -skin KD0GLS_Full
OnlyShowIn=Unity;

Alguém pode ver uma falha nesses arquivos? Tentei encontrar um analisador ou verificador gramatical e a documentação não ajudou em nada. Não parece haver nenhum instalador especial para arquivos *.desktop.

Responder1

Depois de pesquisar ainda mais, descobri o comando CLI desktop-file-validate, que verifica a sintaxe e a estrutura dos *.desktoparquivos.

.../usr/share/applications$ desktop-file-validate free42dec.desktop
free42dec.desktop: error: file contains line "?[Desktop Entry]", which is not a comment, a group or an entry

Olhe para "?[Desktop Entry]". Isso ?indica que há um caractere oculto precedendo [, que acaba sendo uma marca de ordem de byte (BOM) que indica como esse arquivo UTF-8 deve ser lido pelos sistemas BigEndian e LittleEndian. Mais resultados de pesquisa dos2unix, um utilitário que converte arquivos de texto do Windows para o formato UNIX, que você pode obter com

$ sudo apt install dos2unix

Agora faça isso:

.../usr/share/applications$dos2unix free42dec.desktop
dos2unix: converting file free42dec.desktop to Unix format...

Yay! Agora o free42dec.desktoparquivo aparece no Nautilus /usr/share/applicationscom a Namechave Free42 Decimal em vez do nome do arquivo, e o ícone de texto muda para o ícone Free42 Decimal. Este atalho agora aparece no Launcher Dash e no Applications Dash (Visão geral). Copiá-lo para a área de trabalho significa que você também pode clicar nele para iniciar o aplicativo Free42 Decimal.

O formato, estrutura e sintaxe dos *,desktoparquivos (iniciador, atalho) estão documentados emEspecificação de entrada para desktop.

informação relacionada