¿Por qué algunas aplicaciones usan ~ / .config / appname para sus datos de configuración mientras que otras usan ~ / .appname?

37

Me di cuenta de que algunas aplicaciones ponen sus archivos de configuración en ~/.config/appname mientras que otras usan ~/.appname(la forma clásica, AFAIK) para esto. ¿Qué sentido tiene esta distinción y qué podría ser mejor considerar para una aplicación mía?

ACTUALIZACIÓN: Parece que mi (XUbuntu 11.10 predeterminado) $ XDG_CONFIG_HOME está configurado ~/y la mayoría de las aplicaciones en mi sistema (como Mozilla Firefox, Adobe Flash Player, Midnight Commander, Opera, Wine, etc.) cumplen con esto. Pero todavía hay muchas aplicaciones (como Compiz, Deadbeef, VLC, Qt Creator, Google Chrome, XFCE, etc.) en su ~/.config/lugar. Otra cosa sospechosa es que los directorios ~/.config/no están ocultos (no hay punto en sus nombres): ¿no se espera que los directorios de configuración de la aplicación tengan nombres propios constantes sin depender de la ubicación (valor $ XDG_CONFIG_HOME)?

Ivan
fuente

Respuestas:

44

Un complemento a la gran respuesta de jasonwryan, que aborda algunos de sus problemas:

  • Tu no$XDG_CONFIG_HOME está configurado en . Simplemente no está configurado. Por lo tanto, las aplicaciones que siguen la especificación XDG usan el valor predeterminado~/~/.config

  • Los directorios dentro /.configno están ocultos porque no tienen que hacerlo. El objetivo de usar un ~/.configdirectorio es desordenar al usuario $HOME. Como ya están en un directorio oculto separado, no hay necesidad de esconderse allí.

  • El software que no sigue las especificaciones (desafortunadamente, la gran mayoría) usa un directorio oculto para su configuración (como ~/.myapp) como un intento de no saturar al usuario $HOME. Funciona (un poco), pero sigue siendo un mal enfoque cuando, por ejemplo, intenta hacer una copia de seguridad de su configuración y sus "datos grandes" (como Imágenes, Videos, Música) por separado. Tener todas las configuraciones en un solo lugar, sin mezclarlas con los datos del usuario, es un enfoque mucho mejor

  • En cuanto a "tener nombres de constantes independientemente de dónde XDG_CONFIG_HOMEapunta a" , que ya lo hacen: es appname sin el punto inicial. Recuerde: los que usan $HOME/.appnameson los que ignoran las especificaciones XDG. Usan un camino codificado.

  • En cuanto a sus aplicaciones, ¡ utilice el estándar XDG ! Te lo ruego, y tus usuarios dirán gracias por no abarrotar más su $ HOME.

MestreLion
fuente
44
Sólo quiero decir que su respuesta es más excelente! La sabiduría convencional es particularmente útil y sus puntos están muy bien explicados :) ¡gracias!
Steve Benner el
¿Dónde está la diferencia entre una lista de archivos ocultos en el directorio HOME y una lista de archivos no ocultos en un directorio de configuración oculto? Para mí es tan amplio como largo.
ceving
@ceving: veo 2 diferencias principales, una cosmética y una práctica: desde su $HOMEpunto de vista, es una ~/.configentrada única en lugar de varias, quizás docenas de ellas. ¡Y hace que las copias de seguridad de su configuración (o excluirlas) sean mucho más fáciles! ¿Cómo puede distinguir la configuración del software de, digamos, su ~/Documentso su ~/.cache?
MestreLion
24

Debido a que aquellas aplicaciones que colocan archivos de configuración $HOMEestán ignorando la Especificación del Directorio Base XDG , en particular:

Hay un único directorio base en relación con el cual se deben escribir los archivos de configuración específicos del usuario. Este directorio está definido por la variable de entorno $ XDG_CONFIG_HOME ...

Si $ XDG_CONFIG_HOME no está configurado o está vacío, se debe utilizar un valor predeterminado igual a $ HOME / .config.
jasonwryan
fuente
Parece que mi (XUbuntu 11.10 predeterminado) $XDG_CONFIG_HOMEestá configurado en ~/, pero todavía hay muchas aplicaciones que usan~/.config/
Ivan
3
Esta respuesta está lejos de ser completa. Es decir, parece implicar que la especificación ha estado allí desde el primer día, y son solo las aplicaciones las que la han ignorado desde el principio. Pero en realidad hay bastantes aplicaciones que han existido durante mucho más tiempo que XDG con su especificación.
Ruslan
Una versión 0.7 Poettering estándar. Eso debe ser realmente importante. ¿Alguien puede explicar qué problema resuelve el estándar?
ceving
@Ruslan: Ha estado allí desde 2003. ¡Eso fue hace 15 años ! Es cierto, ese no es el primer día y muchos software fueron creados antes de eso. Pero cualquier software de este tipo probablemente tenía muchas actualizaciones para estar en uso hoy en día, por lo que es seguro decir que las que no migraron al estándar XDG eligieron deliberadamente ignorarlo.
MestreLion
@ceving: resuelve el problema de organizar los directorios de los usuarios de la misma manera que /se organiza: no mezclar datos con ejecutables con la configuración. ~/.configes la contraparte del usuario /etc, y esto ayuda enormemente en las copias de seguridad, por ejemplo. Sin /.config, cualquier copia de seguridad de la configuración tendría que incluir manualmente todos los directorios de aplicaciones o excluir manualmente todos los directorios de "big data" de los usuarios (Videos, Música y cualquier otro directorio personal que haya creado).
MestreLion
7

Una respuesta más controvertida es:

  • ~/.configes el valor predeterminado para el estándar XDG, que solo se aplica a las aplicaciones que se adhieren a los estándares de FreeDesktop.org (también a través del uso de la $XDG_CONFIG_HOMEvariable).
  • ~/.appname existía antes del estándar freedesktop
  • No a todos les gusta el estándar freedesktop
  • El "desorden" $HOMEno es un problema, en mi opinión.
David Gardner
fuente
2
Esa no es una respuesta controvertida, es engañosa y errónea: - Actualmente tengo 120 directorios en ~/.config, desde aplicaciones que no tienen relación con FreeDesktop.org, como Libre Office, Chromium, Deluge, muchos juegos (incluidos, pero no solo todos los juegos que usan Unity3D), aplicaciones de Google (Chrome, Earth), Python (IPython, Eric), Emuladores (Muppen 64, Desmune). FreeDesktop.org tiene muy pocas aplicaciones. - ~/.appnamees una convención que existía antes de XDG, pero la mayoría del software que todavía se usa hoy en día se creó mucho después del estándar.
MestreLion
55
- Desde la perspectiva de un desarrollador de software, no hay nada que le guste o no le guste en un directorio estándar, simplemente cambia su constante de directorio de guardado de $HOME/.myappa${XDG_CONFIG_HOME:-$HOME/.config}/myapp
MestreLion
Todavía es un estándar de freedesktop, definido aquí: especificaciones.freedesktop.org/basedir-spec/… y qué aplicaciones son gratuitas para no usar o si no lo desean. No todos consideran necesaria la separación en .config.
David Gardner
Es cierto, pero implica que las aplicaciones que siguen el estándar son de alguna manera "aplicaciones FreeDesktop.org" es muy engañoso.
MestreLion
2
¿Hay algún beneficio para ~/.appmás ~/.config/app?
Sam Boosalis