Criei um arquivo desktop em /usr/share/applications, mas ele não aparece no Dash

Criei um arquivo desktop em /usr/share/applications, mas ele não aparece no Dash

Eu criei um arquivo .desktop.

[Desktop Entry]
Exec=cd /opt/sqldeveloper/sqldeveloper/bin && bash sqldeveloper $*
Terminal=false
StartupNotify=true
Categories=GNOME;Oracle;Utility;Development;
Type=Application
Icon=/opt/sqldeveloper/icon.png
Name=Oracle SQL Developer
Comment=what to say
Version=s.0.m.t.h.i.n.g
GenericName=ORACLE SQL DEVELOPER

Está presente em /usr/share/applications.Está até mostrando o ícone se visualizado no Nautilus, mas quando pressiono alt (o traço ou tecla windows) e procuro por ele, ele não fica visível.

Também tentei:

sudo update-desktop-database

Responder1

Qual é o problema crítico no seu arquivo .desktop

Tentei seu arquivo .desktop substituindo o Exec=comando por outro (simples e funcional) e o arquivo parece estar funcional e não foi recusado pelo Dash.

É um mal-entendido comum pensar que você pode usar a Exec=linha de um arquivo .desktop como se fosse uma janela de terminal. Esse não é o caso; expandir como ~/ou $HOMEnão funciona, por exemplo. É uma boa prática (ou seja: fácil) colocar comandos mais complicados em um arquivo de script separado, para ser executado a partir do arquivo do inicializador (seu .desktoparquivo)

Executando comandos complicados de um arquivo .desktop

Se você deseja especificamente manter seu comandodentroseu .desktoparquivo, você deve fazê-lo da seguinte maneira:

Exec=sh -c "your_complicated_command_here && the_rest_of_it"
(command inside quotes)

Executando um script do arquivo .desktop para fazer o trabalho

Supondo que seu comando

cd /opt/sqldeveloper/sqldeveloper/bin && bash sqldeveloper $*

funciona a partir de uma janela de terminal, eu simplesmente criaria um pequeno script:

#!/bin/bash
cd /opt/sqldeveloper/sqldeveloper/bin && bash sqldeveloper $*

Salve-o como scriptname.she altere a Exec=linha do seu arquivo .desktop para:

Exec=sh /path/to/scriptname.sh

Então seu .desktoparquivo aparecerá no Dash

Observação

Que há mais problemas com seu arquivo .desktop, conforme mencionado por @Braiam e @MrVaykadji. Alguns exemplos:

  • Você não deve usar apenas valores inventados na Categories=linha, como você pode leraqui
  • O campo versão não é obrigatório, mas se for utilizá-lo, use 1.0

Mais pode ser encontradoaqui. Boas ferramentas que você pode encontraraqui(também obrigado a @Braiam e @MrVaykadji).

O ponto crítico que faz com que seu arquivo .desktop não apareça no Dash é a Exec=linha.

informação relacionada