Où les associations de fichiers sont-elles stockées?

67

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

Y at-il un /etc/asscociationsfichier ou quelque chose?

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

Stann
la source

Réponses:

67

Le gestionnaire de fichiers (Nautilus, par défaut) utilise le type MIME d'un fichier pour déterminer le programme avec lequel l'ouvrir. Quand 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 qui est placé dans /usr/share/applications. C'est le fichier utilisé pour les menus, les raccourcis sur le bureau, etc.

Par exemple, GIMP contient 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 MimeTypechamp - cela répertorie les types MIME pris en charge. Le Execchamp 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 que j'ai installée à partir d'un PPA, elle est donc supérieure à 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 la recherche dans chaque fichier .desktop prendrait trop de temps si cette opération était effectuée chaque fois qu'un fichier était ouvert.

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.listfournit les informations sur les valeurs par défaut du système. Sauf indication contraire de votre part, ce sont les applications utilisées lorsque vous «ouvrez» un fichier.

dv3500ea
la source
7
Après avoir modifié les types MIME dans les /usr/share/applications .desktopfichiers, existe-t-il une commande pour recréer cette base de données MIME afin de voir les nouvelles associations en action?
Redsandro
12
Oui. sudo update-desktop-databaseVoir jarrpa.net/2011/10/28/…
NoBugs
Un lieu plus approprié pour les changements locaux est /usr/local/share/applications. Je pense que gtk y regarde aussi, par défaut. C'est le cas sur mon système, mais il a été mis à niveau (non réinstallé) depuis Ubuntu 7.04 ou à peu près.
Peter Cordes
2
Ubuntu semble suivre freedesktop.org: standards.freedesktop.org/mime-apps-spec/… , un projet génial .
Ciro Santilli a annoncé le
23

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

Alors que le fichier defaults.list (que vous pouvez localiser en tapant "localiser le fichier defaults.list") fournit la liste des applications associées à chaque type MIME, toutes les personnalisations que vous apportez sont stockées dans votre répertoire personnel, dans ~ / .local /. share / applications / mimeapps.list. Ainsi, 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 disponible à l’adresse http://library.gnome.org/admin/system-admin-guide/stable/ ne semble pas traiter de mimeapps.list, mais j’ai trouvé la description suivante sur http: //live.gnome. .org / SysAdminGuideUpdate :

mimeapps.list se trouve dans $ XDG_DATA_DIRS / applications. Son but est d'ajouter ou de supprimer des associations de mime d'applications. nautilus écrit ~ / .local / share / applications / mimeapps.list lorsque l'utilisateur apporte des modifications dans la boîte de dialogue "Ouvrir avec".


la source
1
Mais en utilisant Ubuntu 12.04, je me rends compte que le mimeapps.listest remplacé par des entrées dans le fichier defaults.list.
feeela
1
le 14 avril, j’ai pu ~/.local/share/applications/mimeapps.listentrer dans s / vlc / mplayer / , et des processus en cours, tels que pcmanfm, ont enregistré les modifications sans redémarrer. (mplayer.desktop ne fait que lancer mplayer. J'imagine que j'en avais un qui traînait depuis une ancienne installation de mplayer installée dans / usr / local. IDK si vous en aviez MimeType=list;besoin ou pas.
Peter Cordes
Plus précisément, vous mimeapps.listpouvez vous trouver n'importe où dans le chemin de recherche suivant: specifications.freedesktop.org/mime-apps-spec/…
Ciro Santilli a été ajouté
18

J'ai trouvé que sur mon système (Debian Jessie), il y avait aussi ~/.config/mimeapps.listune association que j'avais accidentellement créée pour ouvrir un type de fichier spécifique avec gedit. Aucune des méthodes standard pour corriger cela (paramètres de l'application par défaut, Thunar's open with property) ne le reflétait pas, mais gedit était l'application par défaut.

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

Bryan Leaman
la source
2
Merci, vous m'avez accidentellement aidé à réparer Firefox en ouvrant tout dans Gedit. Sur openSUSE 13.2, j'ai supprimé la ligne avec "application / octet-stream = org.gnome.gedit.desktop;". :)
user31389
3
depuis ubuntu 15.04, les modifications spécifiques à l’utilisateur sont également stockées dans ~/.config/mimeapps.list.
DJCrashdummy
2
Plus précisément, vous mimeapps.listpouvez vous situer n'importe où dans le chemin de recherche suivant: specifications.freedesktop.org/mime-apps-spec/…
Ciro Santilli a été ajouté
8

J'ai trouvé ce lien concernant l'association par défaut, cela pourrait être utile. https://wiki.archlinux.org/index.php/Default_Applications
pour une association globale:

/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 [Added Associations] est utilisée pour spécifier les applications préférées (par défaut) avec une préférence décroissante. ce qui signifie que desktopfile1 est le plus préféré et desktopfileN est le moins préféré.
La section [Associations supprimées] permet de supprimer explicitement les associations héritées précédemment.

IdontCareAboutReputationPoints
la source
1
Cela provient d'un site archlinux , ne s'applique pas nécessairement sur Ubuntu, /usr/share/applications/mimeapps.listn'existe pas.
Guntbert
Merci d’avoir signalé cette remarque, bien que l’utilisateur ait dit à Ubuntu ou à d’autres systèmes Linux, cela signifie que c’est aussi une réponse à sa question:
IdontCareAboutReputationPoints
5
Cette réponse est parfaitement ok si vous remplacez mimeapps.desktoppardefaults.desktop
szx
8

J'ai pu créer 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'avais pas besoin de courir sudo update-desktop-database.

Warvariuc
la source
7

Créez un fichier truecrypt.desktopdans ~/.local/share/applicationsles lignes suivantes:

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

puis éditez le fichier ~/.local/share/applications/mimeapps.listet 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>
Blindfreddy
la source
Bonne réponse, car cela fonctionne pour ceux qui utilisent kde, mais qui ont quelques programmes natifs de gtk, comme firefox.
naught101
5

mimeapps.list chemin de recherche

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

Le standard freedesktop.org dit à l' adresse https://specifications.freedesktop.org/mime-apps-spec/mime-apps-spec-1.0.html :

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

Les valeurs par défaut de ces variables d’environnement sont ensuite indiquées à l’ adresse 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 être vérifiées ~/.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

éditera automatiquement ces fichiers.

Ciro Santilli 改造 中心 六四 事件
la source
2

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 https://specifications.freedesktop.org/mime-apps-spec/mime-apps-spec-1.0.1.html pour connaître les emplacements pouvant être utilisés pour remplacer des valeurs par défaut.

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

De plus, toutes les associations peuvent être gérées-modifiées en ligne de commande en utilisant:

xdg-mime

Xoristzatziki
la source
1

Freedesktop.org (anciennement appelé le groupe de bureaux X, d'où l'abréviation "XDG") est le groupe qui utilise actuellement les normes X de ce type (en savoir plus sur Wikipedia ).

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

xdg-mime default xnview.desktop image/jpeg

 

Après avoir beaucoup joué avec les éditeurs d’image et les lecteurs, je me suis retrouvé avec différents lecteurs pour différents types d’image avec une cohérence quasi nulle, en particulier parmi les types d’images plus rares.

J'ai pris la commande ci-dessus et l'ai affectée à chacun des types MIME contrôlés par les visualiseurs d'images, puis en ai créé un nouveau image-viewer.desktopen clonant l'un d'entre eux (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

Cela examine les .desktopfichiers de chacun des téléspectateurs ( 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 le libellé de la préface (précédemment mis en correspondance) et divise la liste en une entrée par ligne. sort -upuis supprime les lignes redondantes, puis on leur confie xdg-mimeles nouvelles valeurs par défaut.

(Si vous voulez tester cela avant de le lancer en direct, changez xargsen xargs echoet 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 .desktopfichier (vous pouvez utiliser un fichier existant). J'ai fait cette étape supplémentaire de sorte que, lorsque je change inévitablement d'allégeance entre les prévisualisateurs d'images, je dois simplement changer ce fichier.

Adam Katz
la source
1

Sur Ubuntu 18.04, j'ai constaté que l'ordre de priorité était le suivant: du plus fort au plus faible:

  1. ~/.local/share/applications/defaults.list
  2. /usr/share/applications/defaults.list
  3. ~/.config/mimeapps.list ("Open With Other Application" mettra à jour cela)
  4. ~/.local/share/applications/mimeapps.list
  5. La première correspondance trouvée dans le mimeinfo.cacheregistre des applications compatibles, générée à partir des .desktopfichiers présents dans /usr/share/applicationset /usr/local/share/applications, et pouvant être régénérée à l'aide de update-desktop-database.
  6. (Jamais utilisé) /etc/gnome/defaults.list
Jimmy He
la source