62 votes

Registre des extensions de fichier / types mime dans Linux

Je suis le développement d'une application Linux qui dispose de son propre format de fichier. Je veux que mon application pour l'ouvrir lorsque vous double-cliquez sur les fichiers.

Comment puis-je enregistrer une extension de fichier et l'associer avec mon application sur Linux? Je suis à la recherche d'une manière qui est la norme (fonctionne avec GNOME et KDE en fonction des systèmes) et peut être effectué automatiquement lors de mon programme est installé ou exécuté pour la première fois.

53voto

skolima Points 12221

Utiliser xdg-utils de freedesktop.org Portland.

Enregistrer l'icône pour le type MIME:

xdg-icon-resource install --context mimetypes --size 48 myicon-file-type.png x-application-mytype

Créer un fichier de configuration (freedesktop Partagé MIME de la documentation):

<?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>

Installer le fichier de configuration:

xdg-mime install mytype-mime.xml

Cela devient votre fichiers reconnus et associés à une icône. xdg-mime default peut être utilisée pour associer une application avec le type MIME fois que vous obtenez une .desktop le fichier installé.

10voto

Kai Points 2436

Il y a deux parties. Vous devez vous inscrire à un nouveau type de fichier puis de créer un ordinateur de bureau d'entrée de votre application. Le bureau d'entrée associés à votre application avec votre nouveau type mime.

Je pensais que les deux Gnome et KDE (peut-être seulement 4+?) utilisé le freedesktop partagé mime info spec, mais je peut très bien être faux.

4voto

Joel Coehoorn Points 190579

1) dans linux c'est une fonction de votre environnement de bureau plutôt que de l'os lui-même.
2) GNOME et KDE ont différentes méthodes pour cela.
3) Il n'y a rien qui vous empêche de le faire dans les deux sens.

3voto

fastrizwaan Points 9

Essayer 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

assurez-vous que: FOO binaire est dans /usr/bin (ou dans $PATH)

0voto

Hibou57 Points 608

@Joel Coehoorn: autant que je sais, KDE repose sur FreeDesktop trop, sauf qu'il ajoute des extensions spécifiques à *.de fichiers de bureau.

Après un MIME de la définition de Type de fichier a été installé, vous devez également appeler "update-mime-base de données ~/.local/share/mime", si à partir d'un compte d'utilisateur ou "update-mime-base de données /usr/share/mime", si à partir de la racine en compte à l'échelle du système de maintenance.

Si vous avez installé *.les fichiers desktop trop (ex. dans ~/.local/share/applications), vous allez probablement avoir à invoquer la "killall gnome-panel" (pour les utilisateurs de GNOME), de sorte que les entrées de menu sont mis à jour en conséquence, ou bien redémarrer votre cession.

De la même manière, si vous avez installé quelques icônes associées à certains Types MIME, vous allez probablement avoir à invoquer la "killall nautilus" (pour les utilisateurs de GNOME), de sorte que Nautilus, en effet, utilise les icônes associées dans votre dossier de points de vue; ou bien, redémarrez votre cession.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X