web-dev-qa-db-fra.com

Pourquoi certaines applications utilisent-elles ~ / .config / appName pour leurs données de configuration tandis que d'autres utilisent ~ / .appname?

J'ai remarqué que certaines applications mettent leurs fichiers de configuration à ~/.config/appname tandis que d'autres utilisent ~/.appname (la manière classique, Afaik) pour cela. Quel est le sens de cette distinction et de ce qui pourrait être préférable à considérer pour une application de mienne?

Mise à jour: on dirait que mon (xubuntu 11.10 par défaut) $ xdg_config_home est défini sur ~/ et la plupart des applications de mon système (comme Mozilla Firefox, Adobe Flash Player, Midnight Commander, Opera, Vin, etc.) sont conformes à cela. Mais il y a encore de nombreuses applications (comme compiz, Deadbeef, VLC, Créateur Qt, Google Chrome, XFCE, etc.) en utilisant ~/.config/ plutôt. Une autre chose suspecte est que les répertoires de ~/.config/ ne sont pas eux-mêmes cachés (pas de point dans leurs noms) - ne sont pas des noms de configuration de l'application que vous devriez avoir des noms constants sans dépendre de l'emplacement ($ xdg_config_home)?

37
Ivan

Un complément à la grande réponse de Jasonwryan, en adressant à certaines de vos problèmes:

  • Ton $XDG_CONFIG_HOME est pas SET sur ~/. Il n'est tout simplement pas défini. Donc Applications QUI Suivez la spécification XDG Utilisez la valeur par défaut ~/.config

  • Les DIRS à l'intérieur /.config ne sont pas cachés parce qu'ils ne doivent pas. Tout le point d'utiliser un ~/.config dir est à non encombré l'utilisateur $HOME. Comme ils sont déjà dans un dir distinct et dissimulé, il n'est pas nécessaire d'être caché à l'intérieur.

  • Logiciel qui ne suit pas la spécification (malheureusement toujours la grande majorité) utilise un dir masqué pour leurs paramètres (comme ~/.myapp) En tant que tentative Ne pas encombrer l'utilisateur $HOME. Il (un peu) fonctionne, mais c'est toujours une mauvaise approche lorsque, par exemple, vous essayez de sauvegarder vos paramètres et vos "grandes données" (comme des images, des vidéos, de la musique) séparément. Avoir tous les paramètres en une seule place, sans mélanger les données de l'utilisateur, est une approche bien meilleure

  • Comme pour "ayant des noms constants quel que soit le lieu de là XDG_CONFIG_HOME pointe sur ", ils font déjà: c'est appname sans le point de dirigeant. N'oubliez pas: Ceux qui utilisent $HOME/.appname sont ceux qui Ignores Spécification XDG. Ils utilisent un chemin codé.

  • Quant à vos applications, Veuillez utiliser la norme XDG! Je vous prie, et vos utilisateurs diront merci de ne pas avoir encombré de leur maison $.

44
MestreLion

Parce que ces applications qui placent des fichiers de configuration dans $HOME ignorez-les spécification de répertoire de base xdg , notamment:

Il existe un répertoire de base unique par rapport aux fichiers de configuration spécifiques à l'utilisateur. Ce répertoire est défini par la variable d'environnement $ xdg_config_home ...

[.____] si xdg_config_home n'est pas réglé ou vide, une valeur par défaut égale à $ home/.config doit être utilisée.
24
jasonwryan