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:

  1. Installation von Programmen

  2. Ein Terminal öffnen

Inhaltsverzeichnis
  1. Installation
  2. xdg-mime
    1. MIME-Typ ermitteln
    2. Standard-Anwendung ausgeben lassen
    3. Standard-Anwendung ändern
    4. Neuen MIME-Typ erstellen
  3. xdg-open
  4. xdg-email
  5. Links

Wiki/Icons/terminal.png 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]:

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 http://media.cdn.ubuntu-de.org/wiki/attachments/38/29/wikilogo_64.png
xdg-icon-resource install --context mimetypes --size 64 wikilogo_64.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 wikilogo_64.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ü rechte Maustaste enthaltene Funktion "Senden an E-Mail-Empfänger" nutzt diesen Befehl. Er erwartet mindestens eine gültige E-Mail-Adresse:

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“).