76 votes

Où sont stockées les associations de fichiers ?

Comment Ubuntu ou tout autre système Linux stocke-t-il les associations de fichiers ?

Y a-t-il un /etc/asscociations ou autre ?

Je sais que je peux cliquer avec le bouton droit de la souris sur un fichier et le modifier via "ouvrir avec", mais je suis simplement curieux de savoir comment il est stocké en interne.

7voto

user50461 Points 131

Créer un fichier truecrypt.desktop sur ~/.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

puis modifiez le fichier ~/.local/share/applications/mimeapps.list et ajoutez la ligne suivante :

application/octet-stream=truecrypt.desktop

J'ai trouvé le type mime de Truecrypt en exécutant cette commande :

file --mime-type -b <any truecrypt filename>

5voto

mimeapps.list chemin de recherche

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

La norme freedesktop.org dit à https://specifications.freedesktop.org/mime-apps-spec/mime-apps-spec-1.0.html :

L'ordre de consultation 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 les valeurs par défaut de ces variables d'environnement sont indiquées à l'adresse suivante https://specifications.freedesktop.org/basedir-spec/basedir-spec-0.6.html :

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

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

Des commandes comme :

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

modifiera automatiquement ces fichiers.

5voto

Jimmy He Points 230

Sur Ubuntu 18.04, j'ai constaté que l'ordre de préséance est le suivant, du plus fort au plus faible :

  1. ~/.local/share/applications/defaults.list
  2. /usr/share/applications/defaults.list
  3. ~/.config/mimeapps.list ("Ouvrir avec une autre application" mettra cela à jour)
  4. ~/.local/share/applications/mimeapps.list
  5. La première correspondance rencontrée dans le mimeinfo.cache le registre des applications compatibles, qui sont générées à partir de la base de données de l'UE. .desktop présents dans /usr/share/applications y /usr/local/share/applications et peut être régénéré en utilisant update-desktop-database .
  6. (Jamais utilisé) /etc/gnome/defaults.list

2voto

Adam Katz Points 612

Freedesktop.org (précédemment appelé le X Desktop Group, d'où l'abréviation "XDG") est le groupe qui dirige actuellement les normes X comme celle-ci ( Plus d'informations sur Wikipedia ).

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

xdg-mime default xnview.desktop image/jpeg

Après avoir beaucoup joué avec les éditeurs d'images et les visionneuses, je me suis retrouvé avec des visionneuses différentes pour différents types d'images, avec une cohérence quasi nulle, surtout pour les types d'images les plus rares.

J'ai pris la commande ci-dessus et je l'ai assignée à chacun des types MIME contrôlés par les visionneurs d'images, puis j'ai créé un nouveau fichier image-viewer.desktop en clonant l'un d'entre eux (ceci est facultatif, vous pouvez simplement réutiliser votre préféré). 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

Il s'agit d'examiner les .desktop pour chacun des visionneurs ( Ristretto , Geeqie y GThumb dans mon cas), extrait la définition MIME (qui est précédée de MimeType= et contient ensuite une liste délimitée par des points-virgules), supprime l'étiquette de préface (précédemment appariée), et divise la liste en une entrée par ligne. sort -u puis supprime les lignes redondantes, puis les transmet à xdg-mime pour définir les nouveaux paramètres par défaut.

(Si vous voulez tester ce système avant de l'exécuter en direct, modifiez les paramètres suivants xargs a xargs echo et il imprimera la commande résultante au lieu de l'exécuter).

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

2voto

Xoristzatziki Points 21

Pour tous les utilisateurs :

/usr/share/applications/defaults.list

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

~/.config/mimeapps.list

voir aussi https://specifications.freedesktop.org/mime-apps-spec/mime-apps-spec-1.0.1.html pour les endroits qui pourraient être utilisés pour remplacer les défauts.

Vous devez connaître le mime-type du fichier dont vous voulez modifier l'association.

Toutes les associations peuvent également être gérées et modifiées en ligne de commande :

xdg-mime

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X