staging.inyokaproject.org

Von „.desktop-Datei“ weitergeleitet.

.desktop-Dateien

Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:

Dieser Artikel ist größtenteils für alle Ubuntu-Versionen gültig.

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:

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-DateienProgrammstarterMenüeinträge

  • Desktop-DateienProgrammstarterAutostarter

  • MenüeinträgeAutostarter = ∅

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.

Einen ersten Überblick kann man sich mit diesen Befehlen (jeweils mit Beispielausgabe) verschaffen:

  1. 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 und gdm im Pfad. Andererseits sind es noch nicht alle möglichen Ordner.

  2. Es werden alle Verzeichnisse durchsucht, welche über die Umgebungsvariablen XDG_DATA_HOME (wenn nicht gesetzt, dann per Vorgabe ~/.local/share/) und XDG_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.

  3. 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:

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

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

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

  4. 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 string false. In Desktop-Dateien ist die früher mögliche Darstellung von Wahrheitswerten mit 0 und 1 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.

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.

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 rechte Maustaste) 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:

  1. Sie muss gemäß der Angaben in der Zeile Exec und der Umgebungsvariablen PATH auffindbar sein.

  2. Sie muss als Programm ausführbar sein.

Man kann dazu eine der folgenden 4 Methoden verwenden:

  1. Die Datei wird über PATH gefunden. → Man gibt nur den Dateinamen an.

  2. 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üsselwort Path festlegen!)

  3. 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 wie HOME oder USER und auch das Makro ~ als Bezeichnung des persönlichen Verzeichnisses, muss aber sehr sorgfältig quotieren.
    Beispiel: Exec = sh -c "~/Skripte/Netzwerkprofil %f"

  4. 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 rechte Maustaste) 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 Typ MimeType.

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:

  1. Ist die Desktop-Datei syntaktisch korrekt? → Desktop-Datei validieren

  2. Liegt die Desktop-Datei in einem zulässigen Ordner? → Zulässige Ablageorte

  3. 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!

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

Intern

Extern

Diese Revision wurde am 10. Februar 2023 13:42 von usimonm erstellt.
Die folgenden Schlagworte wurden dem Artikel zugewiesen: Xfce, KDE, LXDE, Unity, MATE, GNOME 3, Desktop