.desktop-Dateien
Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:
Dieser Artikel ist größtenteils für alle Ubuntu-Versionen gültig.
Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:
Dateien mit dem Suffix .desktop (im weiteren: Desktop-Datei) werden bei allen Desktops, welche die allgemeinen Spezifikationen von freedesktop.org 🇬🇧 beachten, für die Konfiguration verschiedener Funktionalitäten verwendet:
Programmstarter sind Desktop-Dateien, welche Informationen bereitstellen,
um ein Programm automatisch beim Hochlauf des Desktops zu starten – Autostarter,
oder die den manuellen Start des Programms aus einem Menü ermöglichen – Menüeinträge,
oder die z.B. dem Dateimanager erleichtern, für eine Datei eine geeignete Applikation zu finden. Dies wird bei der Installation als Menüeintrag automatisch mit erledigt.
Definition eines Untermenüs. Siehe hierzu den Artikel .directory-Dateien. (Das sind inhaltlich syntaktisch Desktop-Dateien, deren Dateinamen aber auf
.directory
enden müssen.)Desktop-Dateien können auch eine URL ins Internet oder auf eine andere Stelle enthalten und damit als Lesezeichen (Bookmark) dienen, was hier aber nicht weiter behandelt wird.
Jede Desktop-Datei ist eine Textdatei im INI-Format und kann mit jedem Texteditor[2] erstellt und verändert werden. Einige Distributionen und Ubuntu-Derivate bringen auch einen eigenen speziellen Menüeditor mit, welche aber in diesem Artikel keine Betrachtung finden.
Hinweis:
Für die in diesem Artikel verwendeten Begriffe Desktop-Dateien, Programmstarter, Menüeinträge und Autostarter gelten:
Desktop-Dateien ⊋ Programmstarter ⊋ Menüeinträge
Desktop-Dateien ⊋ Programmstarter ⊋ Autostarter
Menüeinträge ∩ Autostarter = ∅
Dieser Artikel behandelt nur Desktop-Dateien als Programmstarter mit dem Schwerpunkt auf Menüeinträgen.
Achtung!
Desktop-Dateien können zur Ausführung von Schadsoftware missbraucht werden. Man sollte daher jede irgendwo gefundene Desktop-Datei immer selber kritisch überprüfen, bevor man sie an einem offiziellem Ablageort speichert!
Ablageorte für Programmstarter¶
Autostarter und Menüeinträge sind gleichartig aufgebaut und unterscheiden sich im Grunde nur durch den Ablageort innerhalb des Dateisystems. Menüeinträge stehen in Ordnern applications/, und automatisch zu startende Applikationen stehen in Ordnern autostart/. Diese Verzeichnisse wiederum befinden sich an mehreren Stellen im Dateisystem auf Systemebene in den Hierarchien /usr bzw. /etc sowie auf Benutzerebene im eigenen Benutzerverzeichnis.
Menüeinträge¶
Einen ersten Überblick kann man sich mit diesen Befehlen (jeweils mit Beispielausgabe) verschaffen:
Auflistung aller benutzen Ordner für Menüeinträge:
find /usr/ ~ -name applications
/usr/share/ubuntu/applications /usr/share/gdm/greeter/applications /usr/share/ubuntu-wayland/applications /usr/share/applications /usr/local/share/applications /home/kB/.local/share/applications /usr/share/ubuntu/applications
Hier werden auch einige Ordner gefunden, welche nicht zum Standard nach freedesktop.org gehören, im Beispiel die mit
ubuntu
undgdm
im Pfad. Andererseits sind es noch nicht alle möglichen Ordner.Es werden alle Verzeichnisse durchsucht, welche über die Umgebungsvariablen
XDG_DATA_HOME
(wenn nicht gesetzt, dann per Vorgabe ~/.local/share/) undXDG_DATA_DIRS
als Suchpfad auftauchen:echo ${XDG_DATA_HOME:-~/.local/share/}:$XDG_DATA_DIRS
/home/kB/.local/share/:/usr/share/ubuntu-xorg:/usr/share/gnome:/usr/local/share/:/usr/share/
Die beispielhafte Ausgabe stammt vom GNOME-Desktop unter Ubuntu 22.04 und kann bei anderen Desktops oder Versionen anders lauten. Die Ordner in diesem Suchpfad müssen nicht alle existieren. Es wird stets die erste gefundene passende Datei verwendet und ggf. weitere gleichnamige Dateien werden ignoriert; d.h. Systemdateien können durch benutzerspezifische Dateien übersteuert und somit ausgeblendet oder ersetzt werden.
Auflistung aller Desktop-Dateien für Menüeintröge:
find ~ /usr -path */applications/*.desktop | less
In der Praxis werden für die Anpassung des eigenen Desktops meist nur diese Ablageorte verwendet:
/usr/share/applications/: Dateien in diesem Ordner werden als Menüeinträge in den Desktop-Shells jedes Benutzers angezeigt. Dateien in diesem Verzeichnis müssen dem Benutzer root gehören und dürfen nur durch diesen beschreibbar[1] sein. In der Regel handelt es sich um Dateien, welche von der Paketverwaltung installiert und gepflegt werden.
/usr/local/share/applications/: Wie vorstehendes Verzeichnis, jedoch sollen hier von Administrator des Systems für alle Benutzer vorgesehene Menüeinträge abgelegt werden. Dieser Ordner muss ggf. erst von root angelegt werden.
~/.local/share/applications/: Dieser Ordner im persönlichen Verzeichnis des Benutzers enthält Dateien für Menüeinträge, welche spezifisch nur diesem Benutzer angezeigt werden. Das Verzeichnis existiert nach frischer Installation nicht und muss selber angelegt werden. Gleichnamige Dateien in diesem Ordner übersteuern solche im vorher genannten Ordner.
Desktop-Oberfläche: Einige Desktops in einigen Versionen unterstützen noch diese veraltete und der Spezifikation widersprechenden Methode. Die Funktionsweise solcher Desktop-Dateien hängt von der jeweils verwendeten Desktop-Umgebung und deren Version ab und wird daher in diesem Artikel nicht weiter behandelt, siehe: Desktop-Symbole. Der GNOME-Desktop unterstützt dieses Feature nur über spezielle Shell-Erweiterungen.
Autostarter¶
Die vorhandenen Autostarter und die möglichen Ablageorte findet man ganz analog zum Vorgehen wie für Menüeinträge beschrieben mit diesen Befehlen (jeweils mit Beispielausgabe):
Benutzte Ordner:
sudo find /usr /etc/ ~ -name autostart
/usr/share/gnome/autostart /usr/share/gdm/autostart /usr/share/gdm/greeter/autostart /etc/xdg/autostart /home/kB/.config/autostart
Suchpfad für Autostarter:
echo ${XDG_CONFIG_HOME:-~/.config}:$XDG_CONFIG_DIRS
/home/kB/.config:/etc/xdg/xdg-ubuntu-xorg:/etc/xdg
Vorhandene Autostarter:
sudo find /usr /etc/ ~ -path */autostart/*.desktop | less
Desktop-Datei anlegen¶
Für einen Eintrag in das Menü muss man mit einem Texteditor[2] eine Datei erstellen. Der Dateiname muss ein valider Name zur Verwendung in D-Bus-Nachrichten sein, d.h. er darf nur Ziffern (aber nicht an erster Stelle), kleine und große ASCII-Buchstaben und die Sonderzeichen Unterstrich _
und Bindestrich -
enthalten. Mehrere solche nicht-leeren Zeichenfolgen können durch verbindende Punkte zum Gesamtnamen kombiniert werden, der auf .desktop
enden soll.
Beispiele für zulässige Namen findet man in o.g. Ordnern. Es spricht aber für eigene Desktop-Dateien nichts gegen die Verwendung von Namen wie beispielsweise InyokaEdit.desktop oder Firefox.desktop.
Die Datei besteht aus Zeilen, welche durch ein Zeilenvorschubzeichen (LF, ASCII-Zeichen 10) voneinander getrennt sind. Der verwendete Zeichensatz ist UTF-8. Groß-/Kleinschreibung ist überall in der Datei relevant. Zulässige Zeilen sind:
Leere Zeilen. Diese werden ignoriert.
Kommentarzeilen beginnen mit dem Zeichen
#
(ASCII-Zeichen 36) und werden ignoriert.Kapitelüberschriften enthalten einen Namen in eckigen Klammern
[]
.Spezifikationen haben die Form
Schlüsselwort=Wert
. Die zulässigen Schlüsselworte werden in den folgenden Tabellen erklärt. Rechts und/oder links des Zeichens=
können zur Verbesserung der Lesbarkeit Leerzeichen oder Tabulatoren stehen. Je nach Schlüsselwort muss der Wert einem festgelegten Typ entsprechen:string: Eine Folge von druckbaren ASCII-Zeichen aus dem Bereich 33-126
localestring: Eine Folge von UTF-8-Zeichen, vorgesehen zur Anzeige
iconstring: Eine Folge von UTF-8-Zeichen, vorgesehen zur internen Verwendung. Das ist entweder ein absoluter Pfad zu einer Datei mit einem Ikon oder ein symbolischer Name für ein Ikon.
boolean: Entweder der string
true
oder der stringfalse
. In Desktop-Dateien ist die früher mögliche Darstellung von Wahrheitswerten mit0
und1
nicht mehr zulässig.numeric: Eine Fließkommazahl. Es gibt allerdings noch kein Schlüsselwort, welches diesen Typ verlangt.
Liste von Werten eines vorstehend genannten Typs: Die Elemente der Liste müssen durch Semikolon (
;
) getrennt werden und die Liste soll auch durch ein Semikolon abgeschlossen werden. Wenn ein Semikolon in einem Element vorkommen soll, muss es als\;
quotiert notiert werden. Die früher benutzte Trennung von Listenelementen mit Kommata ist nicht mehr zulässig.
Die offizielle Spezifikation des Dateiformats siehe INI-Format für Desktop-Dateien bei freedesktop.org.
Menüeintrag anlegen¶
Ein manuell angelegter Menüeintrag ist insbesondere für als AppImage (bzw. ohne Paketverwaltung) installierte Programme sinnvoll. Im folgenden praktischen Beispiel wird für das Programm linphone im Untermenü „Büro“ des Desktop-Hauptmenüs (bei GNOME: „Anwendungen“) ein Eintrag mit dem Namen „Linphone“ erstellt. Einen Texteditor öffnen[2] und folgenden Text kopieren, einfügen und für die eigenen Bedürfnisse anpassen:
[Desktop Entry] Version = 1.5 Type = Application Name = Linphone GenericName = Telephony client GenericName[de]=Telefon Comment = A libre SIP client Comment[de] = Ein freies SIP-Telefon # Ikon liegt im Ordner ~/.icons/ Icon = linphone-logo.png Categories = Office;Telephony; MimeType = x-scheme-handler/sip-linphone;x-scheme-handler/sip;x-scheme-handler/sips-linphone;x-scheme-handler/sips;x-scheme-handler/tel;x-scheme-handler/callto; OnlyShowIn = GNOME;XFCE; Terminal = false Exec = linphone %F StartupNotify = true
Die Datei nun im Ablageort im eigenen Verzeichnis unter einem aussagekräftigen Namen wie z.B. linphone.desktop abspeichern. Man kann alternativ auch ein systemweit gültiges Verzeichnis dafür verwenden, benötigt dann aber natürlich Root-Rechte[3].
Hinweis:
Desktop-Dateien, und auch explizit Programmstarter, sind selbst keine ausführbare Dateien und benötigen keine Ausführungsrechte und sollen aus Sicherheitsgründen diese Attribute auch nicht erhalten! Desktop-Dateien haben in der Regel 0644
als Dateiberechtigungen.
Die einzige Ausnahme von dieser Regel gilt bei auf dem Desktop selbst abgelegten Dateien: Diese entsprechen nicht der Spezifikation von freedesktop.org, sondern sind für den jeweiligen Desktop spezifische Erweiterungen. Diese Dateien müssen mit einem speziellem, an anderer Stelle beschriebenem Verfahren ausführbar gemacht werden.
Der neue Eintrag erscheint als Linphone sofort mit Ikon im Menü, sofern die Desktop-Datei syntaktisch fehlerfrei ist, was man überprüfen kann.
Autostarter anlegen¶
Bei der Erstellung eines Autostarters geht man genauso vor wie bei der Erstellung eines Menüeintrags, lediglich muss man einen anderen Ablageort für die Datei wählen. Zu den Besonderheiten bei den einzelnen Desktops lese den Artikel Autostart.
Desktop-Datei bearbeiten¶
Dateien im Ablageort des eigenen Benutzerverzeichnisses kann man jederzeit ändern.
Dateien in einem systemweit gültigen Ablageort, welche dorthin von der Paketverwaltung installiert wurden und somit bei Updates wieder installiert werden könnten, sollte man nicht löschen und auch nicht verändern. Wenn man eine hier abgelegte Desktop-Datei ändern möchte, kopiert man sie besser unter dem gleichen Dateinamen in sein eigenes Benutzerverzeichnis. Diese Kopie kann man beliebig ändern. Für den eigenen Desktop wirksam wird nur die eigene Kopie; das Original wird nicht mehr beachtet.
Menüeintrag ausblenden¶
Manchmal möchte man im eigenen Menü einen vom System vorgegebenen Eintrag nicht sehen. Man kann dann in seinem Benutzerverzeichnis eine Datei anlegen, welche die Systemdatei übersteuert.
Beispiel: Man möchte im eigenen Menü den Eintrag Protokolle nicht sehen. Für diesen Menüpunkt zuständig ist die Datei
/usr/share/applications/org.gnome.Logs.desktop.
Man erstellt selbst die Datei ~/.local/share/applications/org.gnome.Logs.desktop mit folgenden Inhalt:
[Desktop Entry] Type = Application Name = Logs Exec= Hidden=true
Man benötigt in dieser Datei nur die erforderlichen Schlüsselworte (s. folgende Tabellen) und manchmal das Schlüsselwort Exec
, dessen Wert aber leer sein darf.
Neben dem Schlüsselwort Hidden
gibt es noch weitere mit ähnlicher Wirkung:
Hidden
NoDisplay
NotShowIn
OnlyShowIn
Autostart verhindern¶
Mit der gleichen Technik wie bei Menüeintrag ausblenden gezeigt kann man auch den automatischen Start eines systemweit vorgegebenen Programms für sich selbst unterbinden.
Programmstarter entfernen¶
Um einen Programmstarter zu entfernen löscht man die betreffende Desktop-Datei.
Desktop-Datei validieren¶
Eine Desktop-Datei kann man auf korrekte Syntax mit dem Kommandozeilenprogramm desktop-file-validate aus dem standardmäßig installierten Paket desktop-file-utils überprüfen. Dazu startet man das Program einfach mit dem Namen der zu überprüfenden Datei als Argument. Bei korrekter Syntax beendet sich das Programm mit dem Rückgabewert 0
und man erhält man keine Ausgabe; anderenfalls einen von 0 verschiedenen Rückgabewert und konkrete Hinweise, Warnungen und Fehlermeldungen.
desktop-file-validate ~/.local/share/applications/org.gnome.Logs.desktop
Beispielausgabe:
/home/kB/.local/share/applications/org.gnome.Logs.desktop: error: required key "Type" in group "Desktop Entry" is not present /home/kB/.local/share/applications/org.gnome.Logs.desktop: error: required key "Name" in group "Desktop Entry" is not present
Weitere Möglichkeiten verrät das Programm beim Aufruf mit der Option --help
.
Zeilen in Desktop-Dateien¶
Die in den Tabellen beschriebenen Schlüsselworte entsprechen der Version 1.5 der Spezifikation vom 27.04.2020. In den Tabellen bedeutet in der Spalte „Erforderlich“ die Angabe optional
, das man diese Zeile nicht angeben muss, aber wenn man hier etwas angibt, muss es auch vom Desktop beachtet werden; dagegen bedeutet ein nein
, das etwaige Angaben ignoriert werden dürfen.
Tabelle 1: Allgemeine Schlüsselworte in Desktop-Dateien (alle Typen) | |||
Schlüsselwort | Wert und Beschreibung | Erforderlich | Typ |
Type | Legt den Typ der Desktop-Datei fest. Zulässig sind: Application oder Link oder Directory | ja | string |
Name | Der Name der Verknüpfung innerhalb des Menüs. | ja | localestring |
Version | Zulässig ist ein Wert aus 1.0 , 1.1 , … 1.5 . Für neu erstellte Desktop-Dateien sollte man den Wert 1.5 wählen oder diese Zeile weglassen. Mit der Versionsangabe kann man die Verwendung veralteter Schlüsselworte, Werte oder sonstiger Details anzeigen, damit die Anwendungssoftware dies ggf. berücksichtigen möge. Ob die Anwendungssoftware das allerdings macht oder die Desktop-Datei ganz ignoriert oder etwas anderes macht, bleibt ihr überlassen. | nein | string |
GenericName | Allgemeine Beschreibung des Programms, z.B. Web Browser. | optional | localestring |
Hidden = true | Hiermit deaktiviert man die Desktop-Datei vollständig. Alle weiteren Angaben in dieser Datei und in einer von ihr ggf. übersteuerten Datei werden ignoriert. | optional | boolean |
NoDisplay=true | Die Anwendung wird nicht im Menü angezeigt, kann aber über Suchfunktionen gefunden und gestartet werden. Auch Dateimanager nutzen diese Desktop-Datei zur Zuordnung von Programmen zu Dokumenten über den MIME-Typ. | optional | boolean |
OnlyShowIn | Als Wert ist eine Liste von Kennungen für registrierte Desktop-Umgebungen anzugeben. Die Desktop-Datei wird nur dann verwendet, wenn der laufende Desktop in der Liste vorkommt. Der aktuell laufende Desktop steht in der Umgebungsvariablen XDG_CURRENT_DESKTOP . Man darf dieses Schlüsselwort nicht zusammen mit NotShowIn verwenden. | optional | string-Liste |
NotShowIn | Als Wert ist eine Liste von Kennungen für registrierte Desktop-Umgebungen anzugeben. Die Desktop-Datei wird nur dann verwendet, wenn der laufende Desktop nicht in der Liste vorkommt. Wenn dieses Schlüsselwort nicht verwendet wird, dann ist aber die Desktop-Datei in allen Desktops aktiviert. Man darf dieses Schlüsselwort nicht zusammen mit OnlyShowIn verwenden. | optional | string-Liste |
Icon | Symbol (Piktogramm), welches im Menü angezeigt werden soll. Man gibt * entweder den absoluten Pfad zur Datei an, * oder, wenn das Ikon als Datei im Ordner ~/.icons/ abgelegt ist, nur den Dateinamen, * oder einen symbolischen Namen, der über ein Ikon-Thema dem System bekannt ist. | optional | iconstring |
Comment | Ein kurzer beschreibender Satz, welcher mit den Angaben für Name und GenericName nicht identisch sein soll. | optional | localestring |
Programmstarter¶
Für Programmstarter muss die Datei eine Zeile mit der Kapitelüberschrift "[Desktop Entry]
" genau einmal enthalten. (Das gilt so auch bei KDE, welches früher die nun nicht mehr zulässige Variante "[KDE Desktop Entry]
" benutzte.) Vor dieser Zeile dürfen nur Kommentar- und Leerzeilen stehen. In den Zeilen nach dieser Kapitelüberschrift können auch Zeilen mit Spezifikationen folgen. Jede Spezifikation beginnt mit einem Schlüsselwort aus den Tabellen 1 oder 2. Die Reihenfolge der Spezifikationen spielt keine Rolle.
Tabelle 2: Spezielle Schlüsselworte in Desktop-Dateien für Programmstarter | |||
Schlüsselwort | Wert und Beschreibung | Erforderlich | Typ |
Type = Application | Muss genau wie angegeben in der Datei stehen. | ja | string |
Terminal = true Terminal = false | Angabe, ob die Applikation ein Terminal für die Kommunikation mit dem Bediener benötigt oder nicht. Applikationen, die selbst keine Fenster öffnen, benötigen den Wert true ; der Desktop öffnet dann ein Fenster mit einem Terminal und verbindet dies mit den Standard-Kanälen stdin, stdout und stderr. Applikationen, welche ausschließlich über eigene Fenster oder andere Desktop-Elemente mit den Bediener kommunizieren, können den Wert false erhalten. Dies ist auch der Standardwert. | optional | boolean |
Path | Ein absoluter Pfad zu einem Ordner; dieser wird zum Arbeitsverzeichnis, in welches vor dem Start des Programms gewechselt wird. (Das Schlüsselwort ist missverständlich und hat nichts mit der Umgebungsvariable PATH zu tun; es sollte besser "Pwd " lauten.) | optional | string |
Exec | Ein ausführbarer Befehl, mit dem die Applikation auch in einem Terminal gestartet werden könnte. Wenn das Programm im PATH gefunden werden kann, reicht der Dateiname aus; anderenfalls ist der absolute Pfad zu verwenden. Hinter dem Programmnamen können optional Parameter für das Programm angegeben werden. Hierbei sind allerdings alle Sonderzeichen für Desktop-Dateien und alle Sonderzeichen für die Shell zu quotieren. Siehe dazu auch Startmethoden und The Exec key 🇬🇧 sowie Optionen übergeben. | optional | string |
TryExec | Ein ausführbarer Befehl, der entweder über die Umgebungsvariable PATH gefunden wird oder mit absolutem Pfad anzugeben ist. Dieser Befehl soll testen, ob das mit Exec angegebene Programm ausführbar ist. Wenn diese Spezifikation fehlt, wird ersatzweise der mit Exec angegebene Befehl hierfür verwendet, was bei großen Programmen die Performance des Desktops beeinträchtigen kann. | optional | string |
StartupNotify=true StartupNotify=false | Beschreibt, ob die Applikation das "Startup notification protocol" 🇬🇧 beherrscht oder nicht. Man sollte true nur dann verwenden, wenn man ganz sicher weiß, das es der Fall ist und im Zweifel false angeben oder dieses Schlüsselwort gar nicht verwenden. | nein | boolean |
StartupWMClass | Eine "WM Class" oder ein "WM Name", welche von der Applikation benutzt wird. Der Desktop kann diese Information zu Optimierung der Fenster-Gruppen verwenden. Siehe: WMClass bestimmen | optional | string |
DBusActivatable | s. D-Bus Activation 🇬🇧 | nein | boolean |
Implements | s. Interfaces 🇬🇧 | nein | string-Liste |
PrefersNonDefaultGPU | s. Recognized desktop entry keys 🇬🇧 | nein | boolean |
SingleMainWindow | s. Recognized desktop entry keys 🇬🇧 | nein | boolean |
Actions | Eine Liste von Namen für Aktionen im Kontextmenü (oft: Rechtsklick ) der Applikation; siehe Aktionen im Kontextmenü Siehe auch: Additional applications actions 🇬🇧. Wichtig: Für jede Aktion muss diese Desktop-Datei auch eine Kapitelüberschrift enthalten! | optional | string-Liste |
MimeType | Eine Liste von MIME-Typen wie in der Datei /etc/mime.types genannt und die von der in dieser Desktop-Datei beschriebenen Applikation unterstützt werden. Dateimanager benutzen diese Information, um für zu öffnende Dateien geeignete Programme vorzuschlagen. Siehe: MIME-Typen | optional | string-Liste |
Categories | Eine Liste mit standardisierten Bezeichnern 🇬🇧 für Untermenüs im Hauptmenü. Die Anwendung wird mit Namen (s. Schlüsselwort Name ) und Ikon (s. Icon ) in diesen Untermenüs angezeigt. | optional | string-Liste |
Keywords | Liste von Stichwörtern, die z.B. von Suchfunktionen benutzt werden können. Desktop-Dateien lassen sich über die Desktop-Suche schnell finden, wenn man per Schlüsselwort Keywords geeignete Suchbegriffe speichert. | optional | localestring-Liste |
Pfadangaben¶
Die mit den Schlüsselworten Path
, Exec
, TryExec
und Icon
bezeichnetet Dateien können stets mit ihrem absolutem Pfad angegeben werden, relative Pfade oder nackte Dateinamen sind dagegen nur in den genannten Ausnahmefällen möglich. Es werden keine Umgebungsvariablen wie z.B. HOME
und keine Bash-Makros wie ~
ausgewertet.
Startmethoden¶
Die mit dem Schlüselwort Exec
(ebenso bei TryExec
) angegebene Datei muss Bedingungen erfüllen:
Sie muss gemäß der Angaben in der Zeile
Exec
und der UmgebungsvariablenPATH
auffindbar sein.Sie muss als Programm ausführbar sein.
Man kann dazu eine der folgenden 4 Methoden verwenden:
Die Datei wird über
PATH
gefunden. → Man gibt nur den Dateinamen an.Die Datei liegt im Arbeitsverzeichnis. → Man gibt den relativen Pfad zum Arbeitsverzeichnis mit dem Dateinamen an, also etwas wie
Exec=./DATEINAME
. (Falle: Man kann für diesen Zweck im Hauptabschnitt den relativen Pfad zum Arbeitsverzeichnis nicht mit dem SchlüsselwortPath
festlegen!)Bei Skripten kann man eine Shell (die ja über
PATH
gefunden wird) angeben und diese anweisen, das Skript auszuführen. In der Anweisung an die Shell funktionieren dann natürlich auch wieder Umgebungsvariablen wieHOME
oderUSER
und auch das Makro~
als Bezeichnung des persönlichen Verzeichnisses, muss aber sehr sorgfältig quotieren.
Beispiel:Exec = sh -c "~/Skripte/Netzwerkprofil %f"
In allen anderen Fällen gibt man den absoluten Pfad zur ausführbaren Datei mit an,
Beispiel:Exec= /home/kB/Skripte/Netzwerkprofil %f
Konkrete Beispiele findet man im Artikel Desktop-Dateien/Beispiele.
Optionen übergeben¶
Man kann mit dem Schlüsselwort Exec
jede ausführbare Datei, ganz gleich ob GUI-Applikation, Shell-Skript oder Kommandozeilenprogramm starten. Wenn man einen eingebauten Shell-Befehl ausfühen lassen möchte, muss man als auszuführendes Programm eine Shell wie beispielsweise die Bash starten und dieser den auszuführenden Befehl als Option übergeben.
Wenn man dem auszuführenden Programm beim Aufruf Optionen oder Parameter mitteilen möchte, müssen alle Sonderzeichen in Bezug auf die Syntax der Desktop-Dateien quotiert werden. Dafür wird das doppelte Anführungszeichen ("
) verwendet; in einigen Fällen funktioniert auch die Quotierung eines einzelnen Zeichens mit dem umgekehrten Schrägstrich (\). Eine Quotierung mit dem Hochkomma ('
) funktioniert nicht! Sonderzeichen in diesem Sinne sind:
Leerzeichen, Tabulator, Zeilenschaltung (whitespace)
doppeltes und einfaches Anführungszeichen sowie der umgekehrte Schrägstrich (Quotierungszeichen)
die Sonderzeichen
> < ~ | & ; $ * ? # ( )
sowie backtick
`
Beim Aufruf eines Kommandozeilenprogramms muss man zusätzlich noch alle Sonderzeichen aus Sicht der Shell quotieren.
Beispiele syntaktisch valider Exec-Zeilen:
Exec = ssh "spy@nsa.usa.gov" Exec=InyokaEdit %F Exec = bash -c "lsblk -lf /dev/sd? ; read" Exec = nm-connection-editor Exec=/opt/firefox/firefox-bin %u Exec=/usr/lib/jvm/java-7-openjdk-amd64/bin/java -jar %f
Die mit dem Prozentzeichen (%
) beginnenden Platzhalter sind beim Öffnen von Dateien im GUI-Dateimanager wichtig und bezeichnen die selektierten Dateien, welche an der Stelle des Platzhalters eingesetzt werden:
%f
steht für einen Dateinamen.%F
steht für eine Liste von Dateinamen.%u
steht für eine URL der Datei.%U
steht für eine Liste von URLs.
Man kann in der Exec-Zeile nur einen von diesen vier Platzhaltern und diesen auch nur einmal zur Datei-Selektion verwenden.
Es gibt zahlreiche weitere solche Platzhalter:
%i
,%c
und%k
stehen für das Ikon, den lokalisierten Namen und den Ablageort der Desktop-Datei.Alle weiteren sind veraltet.
MIME-Typen¶
Welche Programme im Kontextmenü (oft: Rechtsklick ) einer Datei bei "Öffnen mit...", im Dateimanager automatisch vorgeschlagen werden, hängt vom MIME-Typ der Datei ab. (Damit das überhaupt funktioniert, muss beim Schlüsselwort Exec
ein Platzhalter zur Datei.Selektion verwendet werden.)
Zur Ermittlung der von der Applikation unterstützten MIME-Typen kann man Informationen auf der jeweiligen Projektseite, in der Dokumentation der Applikation, im Wiki oder über allgemeine Recherche im Internet suchen. Manchmal findet man auch Hinweise auf verwendete Dateinamensendungen wie beispielsweise .mp3 oder .mpg, die man in der Datei /etc/mime.types nachschlagen kann:
grep mp3 /etc/mime.types
Beispielausgabe:
audio/mpeg mpga mpega mp1 mp2 mp3 audio/vnd.sealedmedia.softseal.mpeg smp3 smp s1m
Siehe auch: shared-mime-info-spec 🇬🇧
WMClass bestimmen¶
Zur Ermittlung eines Wertes für StartupWMClass
startet man die Applikation und anschließend in einem Terminal den Befehl xprop WM_CLASS
. Nach klicken in das Fenster der Applikation erscheinen im Terminal die von der Applikation verwendeten Fensternamen/-klassen, von denen man einen als Wert für das Schlüsselwort verwendet.
Aktionen im Kontextmenü¶
Diese können über das Schlüsselwort Actions
definiert werden. Für jede solche Aktion muss in der Desktop-Datei eine Kapitelüberschrift "[Desktop Action …]
" existieren und in jedem solchen Abschnitt müssen die Schlüsselworte Name
und Exec
benutzt werden. Einzelheiten werden im Artikel Quicklists besprochen.
Andere Typen von Desktop-Dateien¶
Bei Desktop-Dateien gibt es noch die zulässigen Typen Directory
und Link
:
Beim Typ
Directory
sind nur die Schlüsselworte aus Tabelle 1 zulässig. Zu den Einzelheiten lese den Artikel .directory-Dateien.Typ
Link
(Lesezeichen) sind nur die Schlüsselworte aus Tabelle 1 erlaubt, und als weiteres Schlüsselwort ist "URL
" erforderlich. Auch syntaktisch richtige Lesezeichen müssen nicht funktionieren; beispielsweise behandelt GNOME so etwas nicht wie erwartet.Alle anderen Werte für
Type
sind veraltet; auch der früher bei KDE verwendete TypMimeType
.
Weitere Schlüsselworte¶
Man darf beliebige eigene Schlüsselworte erfinden und verwenden. Diese sollten mit „X-
“ beginnen. Natürlich macht das nur dann Sinn, wenn die eigene Software auch selbst Desktop-Dateien auswertet.
Für den Desktop KDE gibt es zusätzlich diese speziellen Schlüsselworte:
Dev
FSType
MountPoint
ReadOnly
UnmountIcon
Es gibt einige veraltete Schlüsselworte, die nicht mehr verwendet werden sollten: Patterns, DefaultApp, Encoding, MiniIcon, TerminalOptions, Protocols, Extensions, BinaryPattern, MapNotify, SwallowTitle, SwallowExec, SortOrder, FilePattern
.
Lese die offizielle Dokumentation, insbesondere Recognized desktop entry keys 🇬🇧
Lokalisierung¶
In einer Desktop-Datei kann man alle Elemente des Typs localestring lokalisieren, damit – je nach verwendeter Systemsprache – in der Desktop-Oberfläche Name und Beschreibung in der jeweiligen Sprache erscheinen. Dafür setzt man hinter dem Namen des zu lokalisierenden Elements in Klammern den Ländercode und nach dem Gleichheitszeichen die Übersetzung. Für das Element GenericName
sähe das beispielsweise folgendermaßen aus:
GenericName=Music Player GenericName[de]=Musik Player GenericName[fi]=Musiikkisoitin GenericName[pl]=Odtwarzacz Muzyki GenericName[se]=Musikspelare
Desktop-Dateien unterstützen auch abgestufte Lokalisierung nach Sprache und Region. Die Locale-Bezeichnungen haben üblicherweise das Format Sprache_Region@Variante (lang_COUNTRY@modifier). Sprache (lang
) und Region (COUNTRY
) werden durch zweistellige ISO-639- bzw. ISO-3166-Codes repräsentiert (z.B. de_DE für Deutsch/Deutschland oder de_AT für Deutsch/Österreich). Mit der Variante unterscheidet man noch speziellere Feinheiten; dies wird aber bei Desktop-Dateien meistens nicht nicht verwendet.
Die folgende Tabelle gibt einen Überblick, nach welcher Reihenfolge die einzelnen Lokalisierungen genutzt werden:
Tabelle 3: Lokalisierung | ||
LC_MESSAGES Wert | Beispiel | Reihenfolge möglicher Werte |
Sprache_Region@Variante | "de_DE@euro" | Sprache_REGION@Variante, Sprache_REGION, Sprache@Variante, Sprache, Standardwert |
Sprache_Region | "de_DE" | Sprache_Region, Sprache@Variante, Sprache, Standardwert |
Sprache@Variante | "de@euro" | Sprache@Variante, Sprache, Standardwert |
Sprache | "de" | Sprache, Standardwert |
Dadurch ist es möglich, auch unterschiedliche Richtungen einer Sprache zu berücksichtigen, wie am folgenden Beispiel gezeigt:
GenericName=January GenericName[de]=Januar GenericName[de_de]=Januar GenericName[de_at]=Jänner
Beispiele¶
Die Starter von Desktop-Applikationen im Ordner /usr/share/applications/ können z.B. mittels less oder eines Editors[2] eingesehen und als Beispiele hinzugezogen werden.
Desktop-Dateien für konkrete GUI-Applikationen sollen nicht hier, sondern im Artikel zur Applikation stehen oder im Artikel Desktop-Dateien/Beispiele gesammelt werden.
Problembehebung¶
Wenn der Menüeintrag nicht im Menü erscheint oder beim Klick auf einen Programmstarter nichts geschieht, sollte man diese Checkliste abarbeiten:
Ist die Desktop-Datei syntaktisch korrekt? → Desktop-Datei validieren
Liegt die Desktop-Datei in einem zulässigen Ordner? → Zulässige Ablageorte
Stimmen die Dateirechte? – In der Regel sollen Desktop-Dateien nicht ausführbar sein; manchmal müssen sie es aber im Gegenteil sogar definitiv sein. Einfach einmal die andere Einstellung ausprobieren, dabei Desktop-Symbole (Abschnitt „Programmstarter-muessen-ausfuehrbar-sein“) beachten!
Ist die aktuelle Desktop-Datei bereits/noch beim laufenden Desktop registriert? – Nach einer Änderung kann man die Registrierung erzwingen durch diese Methoden:
Restart des laufenden Desktops: Bei GNOME geht das mit den Tasten Alt + F2 , und dann ein kleines R eingeben und mit ⏎ abschließen.
Abmeldung und erneute Anmeldung
Neustart des Rechners
Wenn die Applikation nicht im Dateimanager zum alternativem Öffnen einer Datei angeboten wird, dieses Detail überprüfen: Der mit Exec
angegebene Befehl muss genau einen der Platzhalter %f
, %F
, %u
, %U
enthalten.
Links¶
Intern¶
Desktop Übersichtsartikel
Menüeditor – grafische Menüeditoren
Arronax – grafische Oberfläche zur Bearbeitung von Programmstartern
Quicklists – zusätzliche Aktionen für Applikationen über das Kontextmenü
.directory-Dateien – neues Untermenü erstellen
Extern¶
Specifications 🇬🇧 – Sammlung der für Desktop-Umgebungen relevanten Spezifikationen bei freedesktop.org, insbesondere:
Desktop Entry Specification 🇬🇧 – Aktuelle Version
Desktop Entry Specification 🇬🇧 – Frühere Versionen
Basic format of the file 🇬🇧 – INI-Format für Desktop-Dateien
Recognized desktop entry keys 🇬🇧 – Schlüsselworte in Desktop-Dateien
Registered Environments 🇬🇧) – Registrierte Kurzbezeichnungen für Desktops (Groß-/Kleinschreibung beachten!). (In dem angegebenen Link ist die Bezeichnung für Cinnamon falsch. Korrekt muss es heißen:
X-Cinnamon
)Desktop Application Autostart Specification 🇬🇧 – Spezifikation für Autostarter
Anatomy of a .desktop File 🇬🇧 – Blogbeitrag, 04/2010 (behandelt eine veraltete Version der Spezifikation)