Enregistrer les extensions de fichiers/types MIME sous Linux
-
09-06-2019 - |
Question
Je développe une application Linux qui possède son propre format de fichier.Je souhaite que mon application s'ouvre lorsque vous double-cliquez sur ces fichiers.
Comment puis-je enregistrer une extension de fichier et l’associer à mon application sous Linux ?Je recherche un moyen standard (fonctionne avec les systèmes basés sur GNOME et KDE) et pouvant être effectué automatiquement lorsque mon programme est installé ou exécuté pour la première fois.
La solution
Utiliser xdg-utils
depuis freedesktop.org Portland.
Enregistrez l'icône pour le type MIME :
xdg-icon-resource install --context mimetypes --size 48 myicon-file-type.png x-application-mytype
Créez un fichier de configuration (documentation MIME partagée freedesktop):
<?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>
Installez le fichier de configuration :
xdg-mime install mytype-mime.xml
Cela permet à vos fichiers d'être reconnus et associés à une icône. xdg-mime default
peut être utilisé pour associer une application au type MIME après avoir obtenu un .desktop
fichier installé.
Autres conseils
Il y a deux parties à cela.Vous devez enregistrer un nouveau type de fichier et puis créer une entrée de bureau pour votre application.L'entrée de bureau associe votre application à votre nouveau type MIME.
Je pensais que Gnome et KDE (peut-être seulement 4+ ?) utilisaient le spécifications d'informations sur le mime partagé freedesktop, mais je peux très bien me tromper.
1) sous Linux, cela dépend de votre environnement de bureau plutôt que du système d'exploitation lui-même.
2) GNOME et KDE ont des méthodes différentes pour y parvenir.
3) Rien ne vous empêche de procéder dans les deux sens.
Essayez ce script :besoins:
1. your application icon -> $APP = FIREFOX.png
2. your mimetype icon -> application-x-$APP = HTML.png
dans le répertoire courant :
#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
s'assurer:Le binaire FOO est là dans /usr/bin (ou dans $PATH)