xdg-utils
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:
Die xdg-utils 🇬🇧 beinhalten einige Kommandozeilenwerkzeuge, von denen wahrscheinlich xdg-open das am meisten verwendete ist. Mit diesen kann man die Zuordnung von MIME-Typen und Standard-Anwendungen konfigurieren. Sie wurden im Zuge der Bemühungen der X Desktop Group 🇬🇧 (XDG) entwickelt, um desktop-übergreifende Standards für Linux zu schaffen.
Wichtig zum Verständnis der Funktionsweise ist, dass diese Werkzeuge zum einen eine grafische Oberfläche benötigen (obwohl diese zum Ausführen der Befehle nicht benötigt wird) und zum anderen Aktionen in der Regel pro Benutzer definiert werden. Hintergrund: die Anwendungen wurden in erster Linie als Hilfsprogramme für andere Programme (z.B. im Paketbau oder für Einstellungsmenüs der Distribution) konzipiert. Die Zielgruppe sind also Entwickler, Programmierer, Maintainer und Distributoren. Eine Weiterentwicklung sind die xdg-apps 🇬🇧, die aber nicht mit den hier beschriebenen Werkzeugen verwechselt werden sollten.
Einige der Befehle können zwischen System und Benutzer unterscheiden. Man kann sie also für systemweite Eingriffe mit Root-Rechten aufrufen, muss dann aber die Option --mode system
setzen. Funktioniert diese Option bei einem Befehl nicht, ist dieser auch nicht dazu gedacht, mit Root-Rechten ausgeführt zu werden. Speziell bei Ubuntu kann alternativ das etablierte, von Debian geerbte Alternativen-System zum Einsatz kommen, wenn systemweite Vorgaben gesetzt werden sollen.
Installation¶
In der Regel sind die xdg-utils unter Ubuntu vorinstalliert. Falls doch nicht vorhanden, kann man sie einfach mittels des folgenden Pakets installieren [1]:
xdg-utils
Enthalten sind die folgenden Programme (die hervorgehobenen werden im Verlauf des Artikels genauer besprochen).
xdg-utils | |
Befehl | Beschreibung |
xdg-desktop-menu | Kommandozeilenwerkzeug zum Hinzufügen/Entfernen von Einträgen in Desktop-Menüs (Kontextmenü) |
xdg-desktop-icon | Kommandozeilenwerkzeug zum Hinzufügen/Entfernen von Desktop-Symbolen |
xdg-mime | Kommandozeilenwerkzeug zum Abfragen von Informationen über Dateitypen und zum Hinzufügen neuer Definitionen |
xdg-icon-resource | Kommandozeilenwerkzeug zum Hinzufügen/Entfernen von Symboldateien (Icons) |
xdg-open | Datei oder URL mit dem Standard-Programm des Benutzers öffnen |
xdg-email | Aufruf der Funktion "Neue E-Mail schreiben" (mit dem Standard-Programm des Benutzers) |
xdg-screensaver | Kommandozeilenwerkzeug zur Kontrolle des Bildschirmschoners XScreenSaver |
Kein Bestandteil der xdg-utils ist dagegen xdg-user-dirs.
xdg-mime¶
xdg-mime ist ein Werkzeug, mit dem sich die jeweiligen Standard-Programme des Benutzers anzeigen und ändern lassen. Das Programm bezieht seine Programmliste aus der Datei ~/.local/share/applications/mimeapps.list im Homeverzeichnis. Man kann auch einen Editor verwenden, um diese Datei selbst anzupassen. Änderungen wirken sich allerdings erst bei einer erneuten Anmeldung aus.
MIME-Typ ermitteln¶
Vor einer Änderung ist es notwendig, den MIME-Typ einer Datei zu kennen. Als Beispiel soll eine PDF-Datei dienen:
xdg-mime query filetype DATEI.pdf
liefert folgenden MIME-Typ:
application/pdf; charset=binary
Standard-Anwendung ausgeben lassen¶
Ausgeben lässt sich das aktuelle Standardprogramm mittels:
xdg-mime query default application/pdf
Je nach Ubuntu-Version und -Variante erhält man eine andere Antwort, je nachdem, welches Standard-Programm jeweils bevorzugt wird. Hier die Antwort unter Ubuntu:
evince.desktop
Konkret ist hier also der Programmstarter /usr/share/applications/evince.desktop zuständig, der den PDF-Betrachter Evince aufruft.
Aus der nachfolgenden Tabelle wird deutlich, wie komplex das Setzen einer Standard-Anwendung sein kann, wenn man eine Anwendung für mehr als einen Dateityp oder ein Protokoll nutzen will.
Ermitteln des Standard-Programms | ||
Programm | Befehl | |
Dateimanager | xdg-mime query default inode/directory | |
Webbrowser | xdg-mime query default text/html xdg-mime query default x-scheme-handler/http xdg-mime query default x-scheme-handler/https | |
E-Mail-Programm | xdg-mime query default x-scheme-handler/mailto | |
Editor | xdg-mime query default text/plain | |
Bildbetrachter | xdg-mime query default image/jpeg xdg-mime query default image/png xdg-mime query default image/... |
Standard-Anwendung ändern¶
Hinweis:
Unter einer Desktop-Umgebung leitet xdg-open lediglich an die entsprechende Standard-Programme weiter, so dass Einstellungen über die xdg-Werkzeuge eventuell unwirksam bleiben können. Abhilfe schafft dann eine Anpassung über die jeweilige Desktop-Umgebung, beispielsweise im Dateimanager über das Kontextmenü einer Datei oder in den Einstellungen.
Eine Anwendung kann über ihre .desktop-Datei als neuer Standard eingestellt werden. Beispielsweise setzt folgender Befehl MuPDF als neue Standard-Anwendung für PDF-Dateien:
xdg-mime default mupdf.desktop application/pdf
Neuen MIME-Typ erstellen¶
Einen neuen MIME-Typ zu erstellen kann man am besten mit einem konkreten Beispiel erklären: Für Wikiartikel von ubuntuusers, die lokal mit InyokaEdit angelegt werden, soll ein MIME-Typ erstellt werden. Dateien mit der Endung .inyoka oder .iny sollen einem neuen MIME-Typ zugeordnet und mit Symbol sowie Zuordnung zur Standard-Anwendung versehen werden.
Zunächst wird dazu eine Datei mit der Beschreibung benötigt. Der Inhalt der ubuntuusers-inyoka.xml soll wie folgt aussehen:
1 2 3 4 5 6 7 8 9 | <?xml version="1.0"?> <mime-info xmlns='http://www.freedesktop.org/standards/shared-mime-info'> <mime-type type="text/x-inyoka"> <comment>Textfile with Inyoka markup</comment> <glob pattern="*.inyoka"/> <glob pattern="*.iny"/> <glob pattern="*.inyzip"/> </mime-type> </mime-info> |
Der MIME-Typ kann nun installiert werden:
xdg-mime install ubuntuusers-inyoka.xml
Ein passendes Logo kann aus dem Portal heruntergeladen und installiert werden:
wget https://raw.githubusercontent.com/inyokaproject/inyokaedit/master/application/res/images/inyokaedit_64x64.png xdg-icon-resource install --context mimetypes --size 64 inyokaedit_64x64.png text-x-inyoka
Zuletzt wird die Standard-Anwendung festgelegt:
xdg-mime default inyokaedit.desktop text/x-inyoka
Um MIME-Typ und Icon systemweit für alle Benutzer einzurichten, müssen ausnahmsweise Root-Rechte verwendet werden. Dabei muss den Programmaufrufen die Option --mode system
mitgegeben werden.
sudo xdg-mime install --mode system ubuntuusers-inyoka.xml sudo xdg-icon-resource install --mode system --context mimetypes --size 64 inyokaedit_64x64.png text-x-inyoka
Für das systemweite Setzen der Standardanwendung ist xdg-mime
dagegen nicht geeignet.
Wer sich nicht für Inyoka interessiert, kann das beschriebene Verfahren für ReStructuredText bzw. den MIME-Typ "text/x-restructured
" umsetzen. Hier der Inhalt von restructured.xml:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | <?xml version="1.0" encoding="UTF-8"?> <mime-info xmlns="http://www.freedesktop.org/standards/shared-mime-info"> <mime-type type="text/x-restructured"> <sub-class-of type="text/plain" /> <comment xml:lang="en">reStructuredText source file</comment> <comment xml:lang="de">reStructuredText Quelldatei</comment> <magic priority="50"> <match value="====" type="string" offset="0" /> <match value="----" type="string" offset="0" /> <match value="::::" type="string" offset="0" /> <match value="''''" type="string" offset="0" /> <match value="\x22\x22\x22\x22" type="string" offset="0" /> <match value="~~~~" type="string" offset="0" /> <match value="^^^^" type="string" offset="0" /> <match value="____" type="string" offset="0" /> <match value="****" type="string" offset="0" /> <match value="++++" type="string" offset="0" /> <match value="####" type="string" offset="0" /> <match value="\x3c\x3c\x3c\x3c" type="string" offset="0" /> <match value="\x3e\x3e\x3e\x3e" type="string" offset="0" /> <match value="´´´´" type="string" offset="0" /> </magic> <glob pattern="*.rst"/> </mime-type> </mime-info> |
xdg-open¶
Hinweis:
Ein Schwachpunkt der xdg-utils ist, dass keine Desktop-Umgebung zwingend verpflichtet ist, die Standardisierungsvorschläge umzusetzen. Daher kann es in der Praxis passieren, dass trotz korrekter Verwendung die jeweilige Desktop-Umgebung ihren eigenen Vorgaben folgt.
xdg-open öffnet unabhängig von der eingesetzten Desktop-Umgebung oder dem verwendeten Fenstermanager das jeweilige Standard-Programm, allerdings abhängig vom MIME-Typ. Das Werkzeug lässt sich zum einen vom Terminal aus nutzen, zum anderen benutzen viele Programme intern xdg-open, um bestimmte Aktionen auszuführen. Wird das Programm in einer Desktop-Umgebung benutzt, so leitet es jegliche Anfragen direkt an die entsprechenden Programme der Desktop-Umgebung weiter (gnome-open
, kde-open
, exo-open
usw.).
Das Programm wird über das Terminal[2] aufgerufen. So öffnet:
xdg-open DATEI.pdf
die im aktuellen Verzeichnis liegende PDF-Datei mit dem Standard-PDF-Betrachter, während:
xdg-open http://ubuntuusers.de
die Internetadresse (URL) http://ubuntuusers.de
im Browser öffnet. Hierzu ist die Angabe des Netzwerk-Protokolls notwendig, in diesem Fall also HTTP. Dieser Befehl ist daher nicht äquivalent zu:
xdg-open ubuntuusers.de
denn hier wird versucht, die Datei ubuntuusers.de zu öffnen, was in der Regel zu einer Fehlermeldung führt.
xdg-email¶
Für die Funktion "Neue E-Mail schreiben" dient ein weiteres Werkzeug: xdg-email
. Auch die in manchen Desktop-Umgebungen im Kontextmenü enthaltene Funktion "Senden an E-Mail-Empfänger" nutzt diesen Befehl. Er kann mit diversen Optionen zu Absender, Betreff, Text etc. aufgerufen werden (siehe manpage 🇬🇧). Für 18.04 ist die Voraussetzung, dass mindestens eine gültige E-Mail-Adresse angegeben werden muss, nicht zutreffend; bei älteren Ubuntu-Versionen ist das ggf. anders:
xdg-email BENUTZER@PROVIDER.TLD
ansonsten scheitert der Aufruf mit der Meldung
"Unable to detect the URI-scheme of "mailto:"
oder
"Konnte das URI-Schema von »mailto:« nicht erkennen."
Siehe auch 1210754 im Kombination mit Simple Scan (Abschnitt „Scan2Mail“).
Links¶
Projektseite 🇬🇧
xdg-open 🇬🇧 - Arch Linux Wiki
Alternativen-System - systemweite Standard-Programme
xdg-user-dirs - Werkzeug, das bestimmte Ordner im Homeverzeichnis festlegt