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.

Était-ce utile?

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)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top