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

37

J'ai remarqué que certaines applications mettaient leurs fichiers de configuration dans d' ~/.config/appnameautres tandis que d'autres utilisaient ~/.appname(la méthode classique, autant que je sache). Quel est le sens de cette distinction et quoi de mieux à envisager pour une application de la mienne?

UPDATE: On dirait que mon (valeur par défaut de XUbuntu 11.10) $ XDG_CONFIG_HOME est défini sur ~/et que la plupart des applications de mon système (comme Mozilla Firefox, Adobe Flash Player, Midnight Commander, Opera, etc.) sont conformes à cette règle. Cependant, de nombreuses applications (telles que Compiz, Deadbeef, VLC, Qt Creator, Google Chrome, XFCE, etc.) utilisent à la ~/.config/place. Une autre chose suspecte est que les répertoires dans ~/.config/ne sont pas eux-mêmes cachés (pas de point dans leurs noms) - les répertoires de configuration d'applications ne doivent-ils pas avoir des noms propres constants sans dépendre de l'emplacement (valeur $ XDG_CONFIG_HOME)?

Ivan
la source

Réponses:

44

Un complément à l'excellente réponse de jasonwryan, abordant certains de vos problèmes:

  • Votre $XDG_CONFIG_HOMEn'est pas réglé sur ~/. Ce n'est simplement pas réglé. Donc, les applications qui suivent la spécification XDG utilisent la valeur par défaut~/.config

  • Les répertoires à l'intérieur /.configne sont pas cachés car ils n'ont pas à le faire. L'intérêt d'utiliser un ~/.configrépertoire est de désencombrer l'utilisateur $HOME. Puisqu'ils sont déjà dans un répertoire séparé et caché, il n'est pas nécessaire de s'y cacher.

  • Les logiciels qui ne respectent pas les spécifications (malheureusement toujours la grande majorité) utilisent un répertoire caché pour leurs paramètres (comme ~/.myapp) afin de ne pas encombrer l'utilisateur $HOME. Cela fonctionne (un peu), mais cela reste une mauvaise approche lorsque, par exemple, vous essayez de sauvegarder vos paramètres et vos "données volumineuses" séparément (comme des images, des vidéos, de la musique). Avoir tous les paramètres dans un seul endroit, sans mélange avec les données de l'utilisateur, est une bien meilleure approche

  • Quant à "avoir des noms constants, quel que soit l'endroit où ils XDG_CONFIG_HOMEpointent" , c'est déjà le cas: c'est appname sans le point principal. Rappelez-vous: ceux qui utilisent $HOME/.appnamesont ceux qui ignorent XDG Spec. Ils utilisent un chemin codé en dur.

  • En ce qui concerne vos applications, veuillez utiliser le standard XDG ! Je vous en prie, et vos utilisateurs vous remercieront de ne pas encombrer davantage leur $ HOME.

MestreLion
la source
4
Je veux juste dire que votre réponse est la plus excellente! La sagesse conventionnelle est particulièrement utile et vos points sont très bien expliqués :) merci!
Steve Benner
Où est la différence entre une liste de fichiers cachés dans le répertoire HOME et une liste de fichiers non cachés dans un répertoire de configuration caché? Pour moi, il est aussi large que long.
Ceving
@ceving: Je vois deux différences principales, une esthétique et une pratique: de votre $HOMEpoint de vue, il s'agit d'une ~/.configentrée unique au lieu de plusieurs, voire de plusieurs dizaines. Et cela facilite beaucoup la sauvegarde de vos paramètres (ou leur exclusion)! Comment pouvez-vous distinguer les paramètres logiciels de, disons, votre ~/Documentsou votre ~/.cache?
MestreLion
24

Parce que ces applications qui placent des fichiers de configuration $HOMEignorent la spécification du répertoire de base XDG , notamment:

Il existe un seul répertoire de base par rapport auquel les fichiers de configuration spécifiques à l'utilisateur doivent être écrits. Ce répertoire est défini par la variable d'environnement $ XDG_CONFIG_HOME ...

Si $ XDG_CONFIG_HOME n'est pas défini ou vide, une valeur par défaut égale à $ HOME / .config doit être utilisée.
jasonwryan
la source
On dirait que mon (XUbuntu 11.10 par défaut) $XDG_CONFIG_HOMEest réglé sur ~/, mais de nombreuses applications utilisent encore~/.config/
Ivan
3
Cette réponse est loin d'être complète. À savoir, cela semble impliquer que la spécification existe depuis le premier jour et que seules les applications l'ignorent depuis le début. Mais en réalité, certaines applications existent depuis beaucoup plus longtemps que XDG avec ses spécifications.
Ruslan
Un standard de Poettering version 0.7. Cela doit être vraiment important. Quelqu'un peut-il expliquer quel problème la norme résout?
Ceving
@Ruslan: Cela existe depuis 2003. Cela fait 15 ans ! Certes, ce n'est pas le premier jour et de nombreux logiciels ont été créés auparavant. Toutefois, de nombreux logiciels de ce type comportaient probablement encore de nombreuses mises à jour, aussi ceux qui n’ont pas migré vers la norme XDG ont-ils délibérément choisi de l’ignorer.
MestreLion
@ceving: cela résout le problème de l'organisation de la même manière que les répertoires des utilisateurs /: ne pas mélanger les données avec les exécutables avec la configuration. ~/.configest la contrepartie de l'utilisateur /etc, et cela aide énormément dans les sauvegardes par exemple. Sans cette /.configsauvegarde, les sauvegardes de paramètres devraient soit inclure manuellement tous les répertoires d'applications, soit exclure manuellement tous les répertoires d'utilisateurs "big data" (vidéos, musique et autres répertoires personnels créés par celui-ci).
MestreLion
7

Une réponse plus controversée est:

  • ~/.configest la valeur par défaut pour la norme XDG, qui s'applique uniquement aux applications conformes aux normes FreeDesktop.org (également via l'utilisation de la $XDG_CONFIG_HOMEvariable).
  • ~/.appname existait avant le standard freedesktop
  • Tout le monde n'aime pas le standard freedesktop
  • "Cluttering" $HOMEn'est pas un problème, à mon avis.
David Gardner
la source
2
Ce n'est pas une réponse controversée, c'est une réponse trompeuse et totalement fausse: - Actuellement, j'ai 120 répertoires sur ~/.config, à partir d'applications n'ayant aucun lien avec FreeDesktop.org, telles que Libre Office, Chromium, Deluge, beaucoup de jeux (y compris uniquement tous les jeux utilisant Unity3D), applications Google (Chrome, Earth), éléments Python (IPython, Eric), émulateurs (Muppen 64, Desmune). FreeDesktop.org lui-même a très peu d'applications. - ~/.appnameest une convention qui existait avant XDG, mais la plupart des logiciels encore utilisés aujourd'hui ont été créés bien après la norme.
MestreLion
5
- Du point de vue du développeur de logiciels, il n’ya rien à aimer ou ne pas aimer dans un répertoire standard, cela change simplement votre sauvegarde de $HOME/.myapp${XDG_CONFIG_HOME:-$HOME/.config}/myapp
dossier
Est toujours un standard freedesktop, défini ici: specifications.freedesktop.org/basedir-spec/ et quelles applications sont libres de ne pas utiliser si elles ne le souhaitent pas. Tout le monde ne considère pas la séparation dans .config nécessaire.
David Gardner
Certes, mais impliquer que les applications qui suivent la norme sont en quelque sorte des "applications FreeDesktop.org" est très trompeur.
MestreLion
2
Y at-il des avantages à ~/.appfinir ~/.config/app?
sam boosalis le