Ich habe eine Desktop-Datei in /usr/share/applications erstellt, aber sie wird nicht in Dash angezeigt

Ich habe eine Desktop-Datei in /usr/share/applications erstellt, aber sie wird nicht in Dash angezeigt

Ich habe eine .desktop-Datei erstellt.

[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

Es ist vorhanden /usr/share/applications. Bei der Anzeige in Nautilus wird sogar das Symbol angezeigt, aber wenn ich Alt (den Bindestrich oder die Windows-Taste) drücke und danach suche, ist es nicht sichtbar.

Außerdem habe ich Folgendes versucht:

sudo update-desktop-database

Antwort1

Was ist das kritische Problem in Ihrer .desktop-Datei

Ich habe versucht, Ihre .desktop-Datei durch den Exec=Befehl mit einem anderen (einfachen und funktionierenden) zu ersetzen. Die Datei scheint zu funktionieren und wird von Dash nicht abgelehnt.

Es ist ein weit verbreitetes Missverständnis, dass Sie die Zeile einer .desktop-Datei verwenden können, Exec=als wäre es ein Terminalfenster. Das ist nicht der Fall; das Erweitern wie ~/oder $HOMEfunktioniert beispielsweise nicht. Es ist eine gute (d. h. einfache) Praxis, kompliziertere Befehle in einer separaten Skriptdatei zu platzieren, die von der Startdatei (Ihrer .desktopDatei) ausgeführt wird.

Ausführen komplizierter Befehle aus einer Desktopdatei

Wenn Sie Ihr Kommando behalten möchteninnenIhre .desktopDatei sollten Sie wie folgt gestalten:

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

Ausführen eines Skripts aus der Desktopdatei, um die Aufgabe zu erledigen

Vorausgesetzt, Ihr Befehl

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

funktioniert zwar über ein Terminalfenster, ich würde aber einfach ein kleines Skript erstellen:

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

Speichern Sie es unter scriptname.shund ändern Sie die Exec=Zeile Ihrer .desktop-Datei in:

Exec=sh /path/to/scriptname.sh

Dann .desktopwird Ihre Datei in Dash angezeigt

Notiz

Dass es weitere Probleme mit Ihrer .desktop-Datei gibt, wie von @Braiam und @MrVaykadji erwähnt. Einige Beispiele:

  • Sie sollten nicht einfach erfundene Werte in der Zeile verwenden Categories=, wie Sie lesen könnenHier
  • Das Versionsfeld ist nicht erforderlich. Wenn Sie es jedoch verwenden, verwenden Sie 1.0.

Mehr finden SieHierGute Werkzeuge finden SieHier(auch danke an @Braiam und @MrVaykadji).

Der kritische Punkt, der dazu führt, dass Ihre .desktop-Datei nicht in Dash angezeigt wird, ist jedoch die Exec=Zeile.

verwandte Informationen