Où sont stockées les associations de fichiers?

55

Comment Ubuntu ou d’autres systèmes Linux stockent-ils les associations de fichiers?

Y a-t-il un fichier /etc/asscociations ou quelque chose?

Je sais que je peux faire un clic droit sur un fichier et le modifier via "open with", mais je suis simplement curieux de savoir comment il est stocké en interne.

    
posée Stann 07.12.2010 - 21:29
la source

9 réponses

57

Le gestionnaire de fichiers (Nautilus, par défaut) utilise le type MIME d'un fichier pour déterminer le programme à utiliser. l'ouvrir avec. Lorsqu'une application est installée, elle peut spécifier les types MIME qu'elle peut ouvrir et la commande à utiliser pour ouvrir les fichiers du fichier .desktop placé dans /usr/share/applications . C'est le fichier utilisé pour les menus, les raccourcis de bureau, etc.

Par exemple, GIMP possède le fichier .desktop suivant:

[Desktop Entry]
Version=1.0
Type=Application
Name=GNU Image Manipulation Program
GenericName=Image Editor
Comment=Create images and edit photographs
Exec=gimp-2.7 %U
TryExec=gimp-2.7
Icon=gimp
Terminal=false
Categories=Graphics;2DGraphics;RasterGraphics;GTK;
X-GNOME-Bugzilla-Bugzilla=GNOME
X-GNOME-Bugzilla-Product=GIMP
X-GNOME-Bugzilla-Component=General
X-GNOME-Bugzilla-Version=2.7.2
X-GNOME-Bugzilla-OtherBinaries=gimp-2.7
StartupNotify=true
MimeType=application/postscript;application/pdf;image/bmp;image/g3fax;image/gif;image/x-fits;image/pcx;image/x-portable-anymap;image/x-portable-bitmap;image/x-portable-graymap;image/x-portable-pixmap;image/x-psd;image/x-sgi;image/x-tga;image/x-xbitmap;image/x-xwindowdump;image/x-xcf;image/x-compressed-xcf;image/tiff;image/jpeg;image/x-psp;image/png;image/x-icon;image/x-xpixmap;image/svg+xml;application/pdf;image/x-wmf;image/jp2;image/jpeg2000;image/jpx;image/x-xcursor;

Voir le champ MimeType - il répertorie les types MIME pris en charge. Le champ Exec indique au système d'utiliser la commande gimp-2.7 %U , en remplaçant '% U' par les fichiers à ouvrir. (Remarque GIMP 2.7 est une version installée à partir d’un PPA, donc plus élevée que la version actuelle dans les référentiels Ubuntu).

Lorsque le package d’application est installé, le système extrait ces données de type MIME dans une base de données plus facilement accessible car rechercher dans chaque fichier .desktop prendrait trop de temps si l’on ouvrait un fichier.

Cela indique au système quelles applications peuvent être utilisées pour ce type MIME et fournit les applications dans la liste "Ouvrir avec". La valeur par défaut est définie ailleurs. Le fichier /usr/share/applications/defaults.list fournit les informations relatives aux valeurs par défaut du système. Sauf si vous choisissez autrement, ce sont les applications utilisées lorsque vous "ouvrez" un fichier.

    
réponse donnée dv3500ea 07.12.2010 - 21:51
la source
21

Pour compléter l'excellente réponse de dv3500ea, j'aimerais ajouter quelques informations sur ce qui se passe lorsque vous modifiez vos associations.

Alors que defaults.list (que vous pouvez trouver en tapant "Locate defaults.list") fournit la liste des applications associées à chaque type MIME, toutes les personnalisations que vous effectuez sont stockées dans votre répertoire personnel, dans ~ / .local / share / applications / mimeapps.list. Donc, si vous ajoutez ou supprimez des associations ou modifiez l'association par défaut, ce fichier est mis à jour.

Le Guide d’administration système de GNOME Desktop sur lien ne semble pas discuter de mimeapps.list , mais j'ai trouvé la description suivante sur lien :

  

mimeapps.list est situé dans   $ XDG_DATA_DIRS / applications. Ses   le but est d'ajouter ou de supprimer le mime   associations à partir d'applications.   Nautilus écrit   ~ / .local / share / applications / mimeapps.list   lorsque l'utilisateur apporte des modifications à la   Boîte de dialogue "Ouvrir avec".

    
réponse donnée user8979 29.01.2011 - 12:42
la source
12

J'ai trouvé que sur mon système (Debian Jessie), il y avait aussi un ~/.config/mimeapps.list qui avait une association créée accidentellement pour ouvrir un type de fichier spécifique avec gedit. Aucune des méthodes standard de correction (paramètres d’application par défaut, propriété ouvrir avec de Thunar) ne l’avait reflétée, mais gedit était l’application par défaut.

J'ai pu supprimer la ligne de ~/.config/mimeapps.list et maintenant l'application correcte ouvre le fichier.

    
réponse donnée Bryan Leaman 10.01.2015 - 19:24
la source
6

Créez un fichier truecrypt.desktop in ~/.local/share/applications avec les lignes suivantes:

[Desktop Entry]
Encoding=UTF-8
Type=Application
Icon=
Exec=/usr/bin/truecrypt %U
Name=truecrypt
Comment=manage truecrypt volumes

éditez ensuite le fichier ~/.local/share/applications/mimeapps.list et ajoutez la ligne suivante:

application/octet-stream=truecrypt.desktop

J'ai découvert le type MIME de Truecrypt en suivant cette commande:

file --mime-type -b <any truecrypt filename>
    
réponse donnée Blindfreddy 13.03.2012 - 17:32
la source
6

J'ai pu définir une association comme celle-ci:

xdg-mime default xnview.desktop image/jpeg

Vous pouvez également supprimer des associations et faire d’autres choses: man xdg-mime

Je n'ai pas eu besoin de lancer sudo update-desktop-database .

    
réponse donnée warvariuc 21.06.2015 - 12:00
la source
5

J'ai trouvé ce lien concernant l'association par défaut, cela pourrait être utile. lien
pour l'association mondiale:

/usr/share/applications/mimeapps.list

par association d'utilisateurs:

~/.local/share/applications/mimeapps.list
La syntaxe

est la suivante:

[Added Associations]
mimetype=desktopfile1;desktopfile2;...;desktopfileN
...
[Removed Associations]
mimetype=desktopfile1;desktopfile2;...;desktopfileN
La section

[Associations ajoutées] permet de spécifier les applications préférées (par défaut) par préférence décroissante. ce qui signifie que desktopfile1 est le plus préféré et que desktopfileN est le moins recommandé.
La section [Associations supprimées] permet de supprimer explicitement tout fichier hérité associations.

    
réponse donnée MusuNaji 23.08.2013 - 10:16
la source
2

Chemin de recherche mimeapps.list

D'autres ont mentionné ce fichier, mais aucun n'a expliqué son emplacement avec précision.

La norme freedesktop.org indique à lien :

  

L’ordre de recherche de ce fichier est le suivant:

$XDG_CONFIG_HOME/$desktop-mimeapps.list user overrides, desktop-specific (for advanced users)
$XDG_CONFIG_HOME/mimeapps.list             user overrides (recommended location for user configuration GUIs)
$XDG_CONFIG_DIRS/$desktop-mimeapps.list sysadmin and ISV overrides, desktop-specific
$XDG_CONFIG_DIRS/mimeapps.list             sysadmin and ISV overrides
$XDG_DATA_HOME/applications/$desktop-mimeapps.list  for completeness, deprecated, desktop-specific
$XDG_DATA_HOME/applications/mimeapps.list             for compatibility, deprecated
$XDG_DATA_DIRS/applications/$desktop-mimeapps.list    distribution-provided defaults, desktop-specific
$XDG_DATA_DIRS/applications/mimeapps.list              distribution-provided defaults

et ensuite les valeurs par défaut pour ces variables d'environnement sont données à l'adresse lien :

  • $XDG_DATA_HOME : $HOME/.local/share
  • $XDG_CONFIG_HOME : $HOME/.config
  • $XDG_DATA_DIRS : none, ajouté à XDG_DATA_HOME
  • $XDG_CONFIG_DIRS : none, ajouté à XDG_CONFIG_HOME

Les anciennes versions d’Ubuntu peuvent ne pas vérifier ~/.config , alors assurez-vous d’essayer également ~/.local/share .

Commandes telles que:

 xdg-settings set default-web-browser chromium-browser.desktop
 xdg-settings get default-web-browser

éditera automatiquement ces fichiers.

    
la source
1

Pour tous les utilisateurs:

  

/usr/share/applications/defaults.list

Chaque utilisateur a un fichier de configuration pour remplacer ces valeurs par défaut:

  

~ / .config / mimeapps.list

voir aussi lien pour les lieux pouvant être utilisés pour contourner les défauts.

Vous devez connaître le type de fichier MIME du fichier que vous souhaitez modifier.

Toutes les associations peuvent également être manipulées - modifiées dans la ligne de commande en utilisant:

  

xdg-mime

    
réponse donnée Xoristzatziki 02.08.2017 - 09:19
la source
0

Freedesktop.org (précédemment appelé le groupe de bureaux X, l'abréviation "XDG") est le groupe qui gère actuellement les normes X ( en savoir plus sur Wikipedia ).

La réponse de warvariuc mentionne déjà xdg-mime comme:

xdg-mime default xnview.desktop image/jpeg

Après avoir beaucoup joué avec les éditeurs d’images et les téléspectateurs, je me suis retrouvé avec différents visualiseurs pour différents types d’images avec pratiquement aucune cohérence, en particulier parmi les types d’images les plus rares.

J'ai pris la commande ci-dessus et l'ai assignée à chacun des types MIME contrôlés par les visualiseurs d'images, puis créé un nouveau image-viewer.desktop en clonant l'un d'entre eux (c'est facultatif, vous pouvez simplement réutiliser votre favori). Ensuite, j'ai vérifié manuellement qu'aucun des types MIME ne serait incompatible avec ma nouvelle application préférée. Enfin, j'ai défini cette application comme étant la valeur par défaut pour tous les types MIME des autres applications:

sed '/^MimeType=/!d; s///; s/;/\n/g' \
  /usr/share/applications/{ristretto,geeqie,gthumb}.desktop |sort -u \
  |xargs xdg-mime default image-viewer.desktop

Ceci examine les fichiers .desktop pour chacun des visualiseurs ( Ristretto , Geeqie et GThumb dans mon cas), extrait la définition MIME (qui est préfacée par MimeType= et contient ensuite une liste délimitée par des points-virgules), supprime l'étiquette de préface (précédemment associée) et divise la liste en une entrée par ligne. sort -u supprime ensuite les lignes redondantes, puis elles sont transmises à xdg-mime pour définir les nouvelles valeurs par défaut.

(Si vous voulez tester ceci avant de l'exécuter en direct, remplacez xargs par xargs echo et il imprimera la commande résultante au lieu de l'exécuter.)

Cette technique devrait fonctionner pour tout ce que vous souhaitez récupérer pour une application cible. Vous n'avez même pas besoin de créer un nouveau fichier .desktop (vous pouvez en utiliser un existant). J'ai fait cette étape supplémentaire pour que, lorsque je change inévitablement d'allégeance entre les prévisionneurs d'images, je n'ai qu'à changer ce fichier.

    
réponse donnée Adam Katz 08.09.2016 - 03:36
la source

Lire d'autres questions sur les étiquettes