Xdg-utils
topic kurze Beschreibung
Beschreibung
Installation
Anwendungen
Fehlerbehebung
Syntax
Optionen
Parameter
Umgebungsvariablen
Exit-Status
Konfiguration
Dateien
Sicherheit
Dokumentation
RFC
Man-Pages
Info-Pages
Siehe auch
Links
Projekt-Homepage
Weblinks
Einzelnachweise
Testfragen
Testfrage 1
Testfrage 2
Testfrage 3
Testfrage 4
Testfrage 5
ArchWiki
Vorlage:Lowercase title ja:Xdg-utils ru:Xdg-utils xdg-utils provides the official utilities for managing XDG MIME Applications.
- Vorlage:Man - Install desktop menu items
- Vorlage:Man - copies desktop entries to the user's desktop
- Vorlage:Man - Compose a new email in the user's preferred email client, potentially with subject and other info filled in
- Vorlage:Man - Install icon resources
- Vorlage:Man - Query and install MIME types and associations
- Vorlage:Man - Open a file or URI in the user's preferred application
- Vorlage:Man - Enable, disable, or suspend the screensaver
- Vorlage:Man - Get or set the default web browser and URL handlers
Installation
Install the Vorlage:Pkg package.
Usage
Environment variables
xdg-utils attempts to integrate with your desktop environment by invoking the specialized programs it provides, where applicable. The evaluation of the current environment is as follows [1]:
- If the standardized XDG_CURRENT_DESKTOP environment variable is set to a recognized desktop environment, the corresponding value is used.
- If any classic fallbacks or environment-specific variables, such as KDE's Vorlage:Ic, are present, then the corresponding value is used.
- If the legacy DESKTOP_SESSION environment variable is set to a recognized desktop environment, the corresponding value is used.
During this process, if any match is found, the DE variable is internally overwritten with the detected desktop environment's normalized value. Hence, Vorlage:Ic is both a legacy environment variable, and an internal state variable for xdg-utils. As an example, if Vorlage:Ic is Vorlage:Ic, xdg-utils will internally set Vorlage:Ic to Vorlage:Ic. If no match is found, then any pre-existing Vorlage:Ic value will be used, in such a way that Vorlage:Ic is equivalent to Vorlage:Ic being unset, and having Vorlage:Ic. This implementation detail is worth noting because it has the consequence that a pre-set Vorlage:Ic is ignored if a desktop environment is otherwise detected.
Values of the variables that xdg-utils recognizes are:
- This is not an environment registered with freedesktop.org.
- GNOME variations, including the GNOME Classic mode, are all regarded as the same by xdg-utils.
Note that this is only a list of what the scripts provided by Vorlage:Pkg are capable of detecting. The scripts will still perform generic, environment-agnostic actions under the following conditions:
- The generic routine was asked for, via Vorlage:Ic or Vorlage:Ic.
- Environment detection failed. All relevant environment variables were unrecognized or unset, and the classic fallbacks did not reveal anything.
- Environment-specific actions were performed, but failed, e.g. due to a missing program.
xdg-mime
Vorlage:Man is a script for directly querying and modifying default MIME applications. It is used within other scripts, such as xdg-open, and is also a useful troubleshooting tool.
Determine a file's MIME type:
$ xdg-mime query filetype photo.jpeg image/jpeg
Determine the default application for a MIME type:
$ xdg-mime query default image/jpeg gimp.desktop
Change the default application for a MIME type:
$ xdg-mime default feh.desktop image/jpeg
Debug default application for MIME type:
$ env XDG_UTILS_DEBUG_LEVEL=10 xdg-mime query default text/html Checking /home/user/.config/mimeapps.list Checking /home/user/.local/share/applications/defaults.list and /home/user/.local/share/applications/mimeinfo.cache Checking /usr/local/share/applications/defaults.list and /usr/local/share/applications/mimeinfo.cache Checking /usr/share/applications/defaults.list and /usr/share/applications/mimeinfo.cache qutebrowser.desktop
When it is necessary to determine the MIME type of a file, xdg-mime attempts to use the right program for the desktop environment:
Desktop Environment | Program | Package |
---|---|---|
Cinnamon | Vorlage:Ic | Vorlage:Pkg |
GNOME | ||
GNOME Flashback | ||
LXDE | ||
MATE | ||
Xfce | ||
Deepin | rowspan="3" Vorlage:- | rowspan="3" Vorlage:- |
Enlightenment | ||
LXQt | ||
KDE Plasma | Vorlage:Ic | Vorlage:Pkg |
In the generic case, xdg-mime will:
- Delegate to mimetype if present. Requires the Vorlage:Pkg package to be installed.
- Delegate to Vorlage:Pkg if present.
xdg-open
Vorlage:Man is a resource opener used by many applications, implementing the XDG MIME Applications standard while integrating with the system's desktop environment as much as possible.
If a desktop environment was detected, its provided handler will be invoked [2]:
Desktop Environment | Program | Package |
---|---|---|
Cinnamon | Vorlage:Ic | Vorlage:Pkg |
GNOME | ||
GNOME Flashback | ||
MATE | ||
Deepin | Vorlage:Ic | Vorlage:Pkg |
Enlightenment | Vorlage:Ic | Vorlage:Pkg |
KDE Plasma | Vorlage:Ic1 | Vorlage:Pkg |
LXDE | Vorlage:Ic | Vorlage:Pkg |
LXQt | Vorlage:- | Vorlage:- |
Xfce | Vorlage:Ic2 | Vorlage:Pkg |
- If Vorlage:Ic is unset, then Vorlage:Ic from Vorlage:Pkg will be used instead. KDE Plasma should set this variable under any condition, though.
- Vorlage:Ic from Vorlage:Pkg will also be tried.
In the generic case, xdg-open will:
- Query #xdg-mime for the default desktop entry associated with the resource, parse the desktop entry, and execute its command.
- Delegate to run-mailcap if present. Requires the Vorlage:AUR package to be installed.
- Delegate to mimeopen if present. Requires the Vorlage:Pkg package to be installed.
Since xdg-mime relies on Vorlage:Pkg package to implement the XDG MIME Applications standard, if you are not using a desktop environment, you should either install Vorlage:Pkg, or consider a different resource opener.
xdg-settings
See Vorlage:Man.
Shortcut to open all web MIME types with a single application:
$ xdg-settings set default-web-browser firefox.desktop
Shortcut for setting the default application for a URL scheme:
$ xdg-settings set default-url-scheme-handler irc xchat.desktop
Tips and Tricks
URL scheme handlers
To set the default application for a URL scheme you may also need to change the default application for the Vorlage:Ic MIME types:
$ xdg-mime default firefox.desktop x-scheme-handler/https x-scheme-handler/http
Ubuntuwiki
{{{#!vorlage Wissen [:Pakete installieren: Installation von Programmen] [:Terminal: Ein Terminal öffnen] }}}
Bild(Wiki/Icons/terminal.png, 48, align=left) Die [freedesktop-software:xdg-utils:] {en} beinhalten einige Kommandozeilenwerkzeuge, von denen wahrscheinlich xdg-open das am meisten verwendete ist. Mit diesen kann man die Zuordnung von [:MIME-Typ:MIME-Typen] und Standard-Anwendungen konfigurieren. Sie wurden im Zuge der Bemühungen der X Desktop Group {en} (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 [gnomeprojects:SandboxedApps:xdg-apps] {en}, 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 [:sudo: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).
{{{#!vorlage Tabelle <rowclass="titel"-2> xdg-utils +++ <rowclass="kopf" cellstyle="width: 20%" > 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 `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 `xdg-open`] Datei oder URL mit dem Standard-Programm des Benutzers öffnen +++ [#xdg-email `xdg-email`] Aufruf der Funktion "Neue E-Mail schreiben" (mit dem Standard-Programm des Benutzers) +++ `xdg-screensaver` Kommandozeilenwerkzeug zur Kontrolle des Bildschirmschoners [:Bildschirmschoner#XScreenSaver:XScreenSaver] }}} Kein Bestandteil der xdg-utils ist dagegen [:Homeverzeichnis#Vorgegebene-Verzeichnisse: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 [:MIME-Typ#Beispiel: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:
{{{#!vorlage Befehl 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:
{{{#!vorlage Befehl 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.
{{{#!vorlage Tabelle <rowclass="titel"-3> Ermitteln des Standard-Programms +++ <rowclass="kopf"> Programm Befehl +++ [:Dateimanager:] `xdg-mime query default inode/directory` +++ [:Internetanwendungen:Webbrowser] `xdg-mime query default text/html`BR`xdg-mime query default x-scheme-handler/http`BR`xdg-mime query default x-scheme-handler/https` +++ [:Internetanwendungen#E-Mail: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`BR`xdg-mime query default image/png`BR`xdg-mime query default image/...` }}}
Standard-Anwendung ändern
{{{#!vorlage 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-Dateien:.desktop-Datei] als neuer Standard eingestellt werden. Beispielsweise setzt folgender Befehl [:MuPDF:] als neue Standard-Anwendung für PDF-Dateien:
{{{#!vorlage Befehl 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:
{{{#!code xml <?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:
{{{#!vorlage Befehl xdg-mime install ubuntuusers-inyoka.xml }}} Ein passendes Logo kann aus dem [:Wiki/Icons/Portal:Portal] heruntergeladen und installiert werden:
{{{#!vorlage Befehl wget xdg-icon-resource install --context mimetypes --size 64 inyokaedit_64x64.png text-x-inyoka }}} Zuletzt wird die Standard-Anwendung festgelegt:
{{{#!vorlage Befehl 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.
{{{#!vorlage Befehl 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 [wikipedia:ReStructuredText:] bzw. den MIME-Typ "`text/x-restructured`" umsetzen. Hier der Inhalt von restructured.xml:
{{{#!code xml <?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="Dirkwagner (Diskussion) 10:40, 2. Dez. 2022 (CET)" 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
{{{#!vorlage 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:
{{{#!vorlage Befehl xdg-open DATEI.pdf }}} die im aktuellen Verzeichnis liegende [:PDF:]-Datei mit dem Standard-PDF-Betrachter, während:
{{{#!vorlage Befehl xdg-open http://ubuntuusers.de }}} die Internetadresse (URL) `http://ubuntuusers.de` im Browser öffnet. Hierzu ist die Angabe des [wikipedia:Netzwerkprotokoll:Netzwerk-Protokolls] notwendig, in diesem Fall also [wikipedia:Hypertext_Transfer_Protocol:HTTP]. Dieser Befehl ist daher nicht äquivalent zu:
{{{#!vorlage Befehl 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ü Vorlage(Tasten, rmb) 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 {en}). 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:
{{{#!vorlage Befehl 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 [bug:1210754:] im Kombination mit [:Simple_Scan#Scan2Mail:].
Links
* [freedesktop-software:xdg-utils:Projektseite] {en} * [archwiki:xdg-open:] {en} - Arch Linux Wiki * [:Alternativen-System:] - systemweite Standard-Programme * [:Homeverzeichnis#Vorgegebene-Verzeichnisse:xdg-user-dirs] - Werkzeug, das bestimmte Ordner im Homeverzeichnis festlegt
- tag: Shell, Desktop, System, Dateiverwaltung