Registrieren Sie Dateierweiterungen/MIME-Typen in Linux
-
09-06-2019 - |
Frage
Ich entwickle eine Linux-Anwendung, die ein eigenes Dateiformat hat.Ich möchte, dass meine App geöffnet wird, wenn Sie auf diese Dateien doppelklicken.
Wie kann ich eine Dateierweiterung registrieren und sie meiner Anwendung unter Linux zuordnen?Ich suche nach einer Standardmethode (funktioniert mit GNOME- und KDE-basierten Systemen) und kann automatisch ausgeführt werden, wenn mein Programm installiert oder zum ersten Mal ausgeführt wird.
Lösung
Verwenden xdg-utils
aus freedesktop.org Portland.
Registrieren Sie das Symbol für den MIME-Typ:
xdg-icon-resource install --context mimetypes --size 48 myicon-file-type.png x-application-mytype
Erstellen Sie eine Konfigurationsdatei (freedesktop Shared MIME-Dokumentation):
<?xml version="1.0"?>
<mime-info xmlns='http://www.freedesktop.org/standards/shared-mime-info'>
<mime-type type="application/x-mytype">
<comment>A witty comment</comment>
<comment xml:lang="it">Uno Commento</comment>
<glob pattern="*.myapp"/>
</mime-type>
</mime-info>
Installieren Sie die Konfigurationsdatei:
xdg-mime install mytype-mime.xml
Dadurch werden Ihre Dateien erkannt und mit einem Symbol verknüpft. xdg-mime default
kann zum Zuordnen einer Anwendung zum MIME-Typ verwendet werden, nachdem Sie eine erhalten haben .desktop
Datei installiert.
Andere Tipps
Dies besteht aus zwei Teilen.Du brauchst Registrieren Sie einen neuen Dateityp und dann Erstellen Sie einen Desktop-Eintrag für Ihre Anwendung.Der Desktop-Eintrag verknüpft Ihre Anwendung mit Ihrem neuen Mime-Typ.
Ich dachte, dass sowohl Gnome als auch KDE (vielleicht nur 4+?) das verwenden Freedesktop Shared Mime Info Spec, aber ich könnte mich durchaus irren.
1) Unter Linux ist dies eine Funktion Ihrer Desktop-Umgebung und nicht des Betriebssystems selbst.
2) GNOME und KDE verfügen über unterschiedliche Methoden, um dies zu erreichen.
3) Nichts hindert Sie daran, beides zu tun.
Probieren Sie dieses Skript aus:braucht:
1. your application icon -> $APP = FIREFOX.png
2. your mimetype icon -> application-x-$APP = HTML.png
im aktuellen Verzeichnis:
#BASH SCRIPT: Register_my_new_app_and_its_extension.sh
APP="FOO"
EXT="BAR"
COMMENT="$APP's data file"
# Create directories if missing
mkdir -p ~/.local/share/mime/packages
mkdir -p ~/.local/share/applications
# Create mime xml
echo "<?xml version=\"1.0\" encoding=\"UTF-8\"?>
<mime-info xmlns=\"http://www.freedesktop.org/standards/shared-mime-info\">
<mime-type type=\"application/x-$APP\">
<comment>$COMMENT</comment>
<icon name=\"application-x-$APP\"/>
<glob pattern=\"*.$EXT\"/>
</mime-type>
</mime-info>" > ~/.local/share/mime/packages/application-x-$APP.xml
# Create application desktop
echo "[Desktop Entry]
Name=$APP
Exec=/usr/bin/$APP %U
MimeType=application/x-$APP
Icon=$APP
Terminal=false
Type=Application
Categories=
Comment=
"> ~/.local/share/applications/$APP.desktop
# update databases for both application and mime
update-desktop-database ~/.local/share/applications
update-mime-database ~/.local/share/mime
# copy associated icons to pixmaps
cp $APP.png ~/.local/share/pixmaps
cp application-x-$APP.png ~/.local/share/pixmaps
stellen Sie sicher:Die FOO-Binärdatei befindet sich in /usr/bin (oder in $PATH).