MIME Types unter Linux

Die Multipurpose Internet Mail Extensions sind entgegen ihrem Namen auch für die Identifizierung eines Dateityps auf Linux Desktops verantwortlich.

Eine gemeinsame Technik der freedesktop Organisation sorgt dafür, dass ein Verfahren dabei auf allen Desktops‘ – Gnome,KDE,Unity.. – gleichermassen funktioniert. Die gemeinnützige Organisation kümmert sich dabei vor allem um die Standardisierung und stellt teilweise sogar SW (software) bereit.
Eine Übersicht der MIME-Type Spezifikation findet sich hier, während der Ordner mit den letzten verfügbaren Änderungen sich hier befindet.

Wenn man einen oder mehrere neue MIME-Types (mit dazugehörigem Programm) einführen möchte, geht man am besten folgendermaßen vor:

  1. Man sucht sich einen passenden Ablageordner – die auf dem System vorhandenen sind
    $XDG_DATA_DIRS/mime
    $XDG_HOME_DIR/mime

    falls XDG_HOME_DIR nicht gesetzt ist, gilt
    ~/.local/share/mime
    Natürlich kann man bspw. XDG_DATA_DIRS auch erweitern um einen neuen Pfad einzuführen
  2. Eigene MIME-Type Deklarierungen müssen innerhalb einer standardisierten XML-basierenden Datei im Ordner packages (unterhalb des Ordners mime) gespeichert werden, bspw
    ~/.local/share/mime/packages/myType.xml
    Eine xml Datei kann dabei auch mehrere MIME-Types definieren. Der genaue Vorgang erklärt eine hervorragende Tutorialseite auf freedesktop:
    Tutorial: adding MIME information to the database
  3. Die sog. MIME-Type database muss aktualisiert werden. Dazu gibt es ein Skript welches die ganzen im Punkt 1. erwähnten Verzeichnisse durchscannt und dort jeweils dezentral binär aufgebaute Hilfsdateien anlegt. Das shell script welches natürlich mit Administrationsrechten ausgeführt werden muss, lautet
    update-mime-database
  4. Die Verknüpfung eines MIME-Types mit einem Programm ist nicht Sache der MIME-Type Definition. Stattdessen legen die Programmbeschreibungsdateien, die sog. desktop-Dateien, offen welche MIME-Types sie bearbeiten. Diese Dateien mit der Endungs .desktop, liegen in
    XDG_DATA_DIRS/application
    XDG_HOME_DIR/application

    mit denselben Ergänzungen wie im Punkt 1.
    Die freedesktop Spezifikation findet man auf folgender Seite. Ein anschauliches Beispiel findet sich hier.
  5. Nachdem man die MIME-Types und Anwendungen die bestimmte MIME-Types bearbeiten können festgelegt hat bleibt noch folgende Frage zu klären: Welche Anwendung ist die bevorzugte Anwendung eines MIME-Types, bspw. image/png ?
    Dort hat jeder Desktop (bspw. KDE) seine Voreinstellungen in der generierten mime.cache Datei (siehe Punkt 3. – Hilfsdateien) getroffen. Diese Entscheidungen können aber ergänzt oder geändert werden.
    Dazu muss man die Datei
    mimeapps.list
    unterhalb von
    XDG_DATA_DIRS/application
    XDG_HOME_DIR/application

    ändern. Wie genau erklärt die Spezifikation auf freedesktop an dieser Stelle.
    Neben der Angabe einer bevorzugten Anwendung für einen MIME-Type in der Sektion
    [Default Associations]
    gibt es auch noch die Möglichkeit zusätzliche Assoziationen zu kreieren oder zu vorhandene zu löschen.

  6. Am Ende bleibt noch die Frage wie man an diese MIME-Type Informationen gelangt? Sicher, haben die grossen Desktops Routinen dafür entwickelt die den Spezifikationen von freedesktop genügen, aber wie kommt man als ISV (Independent Software Vendor) an diese Informationen.
    Vorab – eine API gibt es nicht – unter keiner Sprache. Was es gibt sind Skripte allen voran
    xdg-mime
    des Portland SW Paketes von freedesktop (der SW Part von freedesktop, siehe Einleitung). Unter Ubuntu/Debian gibt es auch noch das Perl-Skript
    mimetype
    mit welchem man wesentlich mehr Informationen abgreifen kann.
    Zu diesem Thema möchte ich noch auf 2 nützliche Links verweisen
    http://wiki.ubuntuusers.de/MIME-Typ
    http://aksubuntu.com/questions/279899

Abschliessend lässt sich sagen, dass die MIME-Type Informationen unter Linux ausgereift und ausreichend ist. Was verbesserungsbedürftig ist, und leider gerade dahindarbt, ist die SW-Unterstützung, v.a. eine C/C++ API seitens freedesktop.org wäre wünschenswert. Dies soll aber nicht darüberhinwegtäuschen, dass die Zusammenarbeit der Linux Desktops gut funktioniert.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.