Symbolpfad in der .desktop-Datei

11

Auf meinem Desktop habe ich eine .desktop-Datei. Wenn ich tippe:

Icon=/home/ianbell/Pictures/myLogo.png

Das Symbol der .desktop-Datei ändert sich (das erwartete Ergebnis).

Aber wenn ich tippe:

Icon=~/Pictures/myLogo.png

es funktioniert nicht

Ist nicht ~/eine Abkürzung für /home/$USER?

Jacob Vlijm
quelle
1
~ steht für Ihr Home-Verzeichnis nur in einer Shell.
user253751
@ JacobVlijm: Entschuldigung, ich bin eingeschlafen, ich programmiere Tag und Nacht :-)
1
@ IanBell Haha, ich kenne das Gefühl :)
Jacob Vlijm
/ home / $ USER funktioniert nicht. Es scheint, dass Sie suchen - / home / $ (whoami). Siehe meine Kommentare unten.
Ajay Kumar

Antworten:

10

Die Verwendung von Pfaden in einer .desktop-Datei

In einer .desktopDatei müssen Sie absolute und vollständige Pfade verwenden. Daher ~wird nicht erweitert.

Dies ist ein häufig gemachter Fehler :)

Ausnahmen zu Symbolen werden ua hier beschrieben :

Symbol zur Anzeige im Dateimanager, in Menüs usw. Wenn der Name ein absoluter Pfad ist, wird die angegebene Datei verwendet. Wenn der Name kein absoluter Pfad ist, wird der in der Symbolthemenspezifikation beschriebene Algorithmus verwendet, um das Symbol zu lokalisieren.

und hier :

Das Symbolfeld ist das Symbol, das vom Launcher verwendet werden soll und die Anwendung darstellt. Für alle Symbole im Verzeichnis /usr/share/pixmapsmuss nicht der vollständige Pfad angegeben werden, sondern der Dateiname ohne die Erweiterung. Wenn sich die /usr/share/pixmaps/wallch.pngSymboldatei beispielsweise befindet , sollte das Symbolfeld nur "Wallch" sein. Für alle anderen Symbole sollte der vollständige Pfad angegeben werden.

Mehr Informationen

In einer .desktopDatei:

In der Icon=Zeile, Sie sind zu verwenden Räume erlaubt:

Icon=/home/jacob/Thema/icon/some folder/some icon.png

ist gut.

jedoch

In der Exec=Zeile, Sie sind nicht erlaubt Räume zu verwenden, es sei denn , im Falle eines Arguments . In allen anderen Fällen müssen Sie die Pfadschritte mit einem Leerzeichen angeben:

Exec=/home/jacob/Bureaublad/some folder/application

wird scheitern, während

Exec="/home/jacob/Bureaublad/some folder/application"

oder

Exec=/home/jacob/Bureaublad/"some folder"/application

wird gut funktionieren

Jacob Vlijm
quelle
Wie verweise ich auf einen Pfad relativ zum "Home-Verzeichnis des Benutzers"?
Aaron Franke
Aaron Franke, Sie können $ (whoami) verwenden, um den aktuellen Benutzernamen zu erhalten. Ich habe es nicht versucht, aber dies sollte funktionieren - für das Home-Verzeichnis für den aktuellen Benutzer - / home / $ (whoami).
Ajay Kumar
Ich habe es versucht und es funktioniert Aaron.
Ajay Kumar
4

Kurz gesagt, .desktopder Icon=Pfad der Datei versteht absolute Pfade, jedoch keine Tilde-Erweiterung, da die Spezifikation definiert, wie .desktopDateien funktionieren sollen.

Tilde Erweiterung

  • Wo Sie die ~Erweiterung von tilde ( ) auf die $HOMEUmgebungsvariable sehen würden, ist häufig beispielsweise in bash, der üblichen Anmeldeshell, mit der Sie an der Eingabeaufforderung interagieren
  • bash und andere POSIX-kompatible Shells führen eine Tilde-to-$ HOME-Erweiterung durch, die der POSIX-Spezifikation für Shells entspricht

.desktop-Dateien

  • Eine .desktopDatei ist jedoch nicht dasselbe wie eine Shell, sondern eine reine Textkonfigurationsdatei, sodass sie nicht unbedingt auf die gleiche Weise funktioniert, selbst wenn sowohl .desktopDateien als auch Shells unter Linux gefunden werden können
  • Wie eine .desktopDatei funktionieren soll, wird in der Desktop- Eintragsspezifikation von Freedesktop definiert

In Bezug auf die Desktop-Eintragsspezifikation Iconsheißt es:

Wenn der Name ein absoluter Pfad ist, wird die angegebene Datei verwendet.

Aus diesem Grund konnten Sie absolute Pfade verwenden, da diese von der Spezifikation abgedeckt werden

Wenn der Name kein absoluter Pfad ist, wird der in der Symbolthemenspezifikation beschriebene Algorithmus verwendet, um das Symbol zu lokalisieren.

Wenn wir die Icon-Theme-Spezifikation überprüfen , gibt es nichts, was besagt, dass sie überhaupt der Tilde-Erweiterung von POSIX folgen muss.

Zusammenfassung

Aufgrund der Freedesktop-Spezifikationen für .desktopdie Icon=Einstellung werden daher absolute Pfade unterstützt, POSIX-Tilde-to-HOME-Erweiterungen jedoch nicht.

Klarheit123
quelle