So erhalten Sie eine *.desktop-Datei zum Starten der App und zum Anzeigen des Namens und des App-Symbols auf dem Desktop und in /usr/share/applications/?

So erhalten Sie eine *.desktop-Datei zum Starten der App und zum Anzeigen des Namens und des App-Symbols auf dem Desktop und in /usr/share/applications/?

Ubuntu Bionic Beaver 18.04.3 Nautilus 3.26.4 (Dateien)

*.desktop Dateien auf dem Desktop oder in ~/bin erscheinen mit demAnwendungSymbol und der Dateiname wird durch den Wert des Namensschlüssels der Datei ersetzt. Durch Klicken auf das Symbol wird die zugehörige App gestartet.

Ich habe zwei Dateien – free42dec.desktop und free42bin.desktop – um die Free42-Emulation des HP42s Reverse Polish-Rechners zu starten. Aber in Nautilus (Dateien) werden diese Dateien immer noch mit ihren vollständigen Dateinamen und dem generischen Textsymbol angezeigt, statt als Free42 Decimal und Free42 Binary mit den entsprechenden Rechnersymbolen. Eine weitere Merkwürdigkeit ist, dass beim Öffnen der Eigenschaften für diese Dateien nur Plain Vanilla auf der Registerkarte Basic angezeigt wird, während andere korrekt funktionierende *.desktop-Dateien den Wert des Exec-Schlüssels auf der Registerkarte Basic anzeigen.

Ich bin nicht der Erste, der dieses Problem mit *.desktop-Dateien hat, aber keine Kombination von Suchbegriffen liefert mir die Antwort. Ich habe verschiedene vorgeschlagene Abhilfen ausprobiert, aber keine hat funktioniert. Also, in meiner Verzweiflung, hier der Text einer dieser Dateien (die andere ist ähnlich):

[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;

Kann irgendjemand einen Fehler in diesen Dateien erkennen? Ich habe versucht, einen Parser oder Grammatikprüfer zu finden, aber die Dokumentation war keine Hilfe. Es scheint kein spezielles Installationsprogramm für *.desktop-Dateien zu geben.

Antwort1

Nach noch mehr Recherche stieß ich auf den CLI-Befehl desktop-file-validate, der die Syntax und Struktur von *.desktopDateien überprüft.

.../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

Schauen Sie sich an "?[Desktop Entry]". Das ?zeigt an, dass vor steht ein verstecktes Zeichen [, das sich als Byte-Order-Mark (BOM) herausstellt und angibt, wie diese UTF-8-Datei von BigEndian- und LittleEndian-Systemen gelesen werden soll. Weitere Suche ergibt dos2unix, ein Dienstprogramm, das Windows-Textdateien in das UNIX-Format konvertiert, das Sie mit erhalten können

$ sudo apt install dos2unix

Mach das jetzt:

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

Juhu! Jetzt free42dec.desktoperscheint die Datei in Nautilus /usr/share/applicationsmit dem NameSchlüssel Free42 Decimal anstelle des Dateinamens und das Textsymbol ändert sich in das Free42 Decimal-Symbol. Diese Verknüpfung erscheint jetzt im Launcher Dash und im Applications Dash (Übersicht). Wenn Sie sie auf den Desktop kopieren, können Sie auch dort darauf klicken, um die Free42 Decimal-App zu starten.

Das Format, die Struktur und die Syntax von *,desktop(Launcher-, Shortcut-)Dateien ist dokumentiert unterDesktop-Eintragsspezifikation.

verwandte Informationen