Почему некоторые приложения используют ~ / .config / appname для своих данных конфигурации, в то время как другие используют ~ / .appname?

37

Я заметил, что некоторые приложения помещают свои файлы конфигурации в ~/.config/appnameто время как другие используют ~/.appname(классический способ, AFAIK) для этого. Какой смысл в этом различии и что может быть лучше рассмотреть для моего приложения?

ОБНОВЛЕНИЕ: Похоже, что для моего (XUbuntu 11.10 по умолчанию) $ XDG_CONFIG_HOME установлено значение, ~/и большинство приложений в моей системе (таких как Mozilla Firefox, Adobe Flash Player, Midnight Commander, Opera, Wine и т. Д.) Соответствуют этому. Но есть еще много приложений (таких как Compiz, Deadbeef, VLC, Qt Creator, Google Chrome, XFCE и т. Д.), Которые используют ~/.config/вместо этого. Другая подозрительная вещь заключается в том, что каталоги ~/.config/сами по себе не являются скрытыми (в их именах нет точек) - разве каталоги приложения не должны иметь постоянные собственные имена вне зависимости от местоположения (значение $ XDG_CONFIG_HOME)?

Иван
источник

Ответы:

44

Дополнение к отличному ответу Джейсонвриана, касающемуся некоторых ваших вопросов:

  • Ваш $XDG_CONFIG_HOMEбудет не установлен ~/. Это просто не установлено. Поэтому приложения , соответствующие спецификации XDG, используют значения по умолчанию~/.config

  • Dirs внутри /.configне скрыты, потому что они не должны. Весь смысл использования ~/.configdir состоит в том, чтобы не загромождать пользователя $HOME. Поскольку они уже находятся в отдельном скрытом каталоге, нет необходимости прятаться внутри.

  • Программное обеспечение, которое не соответствует спецификации (к сожалению, все еще подавляющее большинство) использует скрытый каталог для своих настроек (например ~/.myapp) как попытку не загромождать пользователя $HOME. Это (вроде) работает, но все равно это плохой подход, когда, например, вы пытаетесь сделать резервную копию ваших настроек и ваших «больших данных» (таких как изображения, видео, музыка) по отдельности. Наличие всех настроек в одном месте, без смешивания с данными пользователя, является гораздо лучшим подходом

  • Что касается «иметь имена констант независимо от того, куда XDG_CONFIG_HOMEуказывает» , они уже делают: это appname без ведущей точки. Помните: те, которые используют $HOME/.appname, игнорируют XDG Spec. Они используют жестко закодированный путь.

  • Что касается ваших приложений, пожалуйста, используйте стандарт XDG ! Прошу вас, и ваши пользователи скажут спасибо за то, что вы больше не загромождаете их $ HOME.

MestreLion
источник
4
Просто хочу сказать, что ваш ответ самый превосходный! Общепринятая мудрость особенно полезна, и ваши пункты очень хорошо объяснены :) спасибо!
Стив Беннер
В чем разница между списком скрытых файлов в каталоге HOME и списком не скрытых файлов в скрытом каталоге конфигурации? Для меня это так же широко, как и долго.
выступление
@ceving: я вижу 2 основных различия: косметическое и практическое: с вашей $HOMEточки зрения, это одна ~/.configзапись вместо нескольких, возможно, десятки. И это делает резервное копирование ваших настроек (или исключая их) намного проще! Как вы можете отличить настройки программного обеспечения от, скажем, ваших ~/Documentsили ваших ~/.cache?
МестреЛион
24

Поскольку те приложения, в которые помещаются файлы конфигурации $HOME, игнорируют спецификацию XDG Base Directory , а именно:

Существует один базовый каталог, относительно которого должны быть записаны пользовательские файлы конфигурации. Этот каталог определяется переменной среды $ XDG_CONFIG_HOME ...

Если $ XDG_CONFIG_HOME либо не установлен, либо пуст, следует использовать значение по умолчанию, равное $ HOME / .config.
jasonwryan
источник
Похоже, что my (XUbuntu 11.10 по умолчанию) $XDG_CONFIG_HOMEустановлено на ~/, но все еще используется много приложений~/.config/
Ivan
3
Этот ответ далеко не полный. А именно, кажется, подразумевается, что спецификация была там с самого первого дня, и это просто приложения, которые игнорировали ее с самого начала. Но на самом деле есть довольно много приложений, которые существуют намного дольше, чем XDG с его спецификацией.
Руслан
Версия 0.7 Стандарт Poettering. Это должно быть действительно важно. Кто-нибудь может объяснить, какую проблему стандарт решает?
выступление
@Ruslan: это было там с 2003 года. Это 15 лет назад! Правда, это не первый день, и многие программы были созданы до этого. Но у любого такого программного обеспечения, скорее всего, было много обновлений, которые все еще используются сегодня, поэтому можно с уверенностью сказать, что те, которые не переходили на стандарт XDG, сознательно предпочли его игнорировать.
МестреЛион
@ceving: он решает проблему организации пользовательских папок так же, как /и организовано: не смешивая данные с исполняемыми файлами с конфигурацией. ~/.configявляется аналогом пользователя /etc, и это очень помогает, например, в резервном копировании. Без /.configэтого при резервном копировании настроек придется либо вручную включать все каталоги приложений, либо вручную исключать все каталоги «больших данных» пользователей (видео, музыка и любые другие личные каталоги, которые он мог создать).
MestreLion
7

Более спорный ответ:

  • ~/.configпо умолчанию для стандарта XDG, который применяется только к приложениям, придерживающимся стандартов FreeDesktop.org (также через использование $XDG_CONFIG_HOMEпеременной).
  • ~/.appname существовал до стандарта freedesktop
  • Не всем нравится стандарт freedesktop
  • "Беспорядок" $HOME, на мой взгляд, не проблема.
Дэвид Гарднер
источник
2
Это не спорный ответ, это вводящий в заблуждение и совершенно неправильный ответ: - В настоящее время у меня 120 каталогов ~/.config, из приложений, не имеющих отношения к FreeDesktop.org, таких как Libre Office, Chromium, Deluge, множество игр (включая, но не только все игры, использующие Unity3D), приложения Google (Chrome, Earth), Python (IPython, Eric), эмуляторы (Muppen 64, Desmune). FreeDesktop.org сам по себе имеет очень мало приложений. - ~/.appnameэто соглашение, существовавшее до XDG, но большая часть программного обеспечения, которое все еще используется сегодня, было создано намного позже стандарта.
МестреЛион
5
- С точки зрения разработчика программного обеспечения, в стандарте на каталоги нет ничего, что могло бы нравиться или не нравиться, оно просто меняет константу сохранения dir с $HOME/.myappна${XDG_CONFIG_HOME:-$HOME/.config}/myapp
MestreLion
По-прежнему является стандартом freedesktop, определенным здесь: SpecificationFreedesktop.org/basedir-spec/… и какие приложения могут свободно использовать, которые они не хотят. Не каждый считает разделение на .config необходимым.
Дэвид Гарднер
Да, но подразумевать, что приложения, которые следуют стандарту, являются «приложениями FreeDesktop.org», что вводит в заблуждение.
МестреЛион
2
Есть ли какие-либо преимущества для ~/.appболее ~/.config/app?
Сам Boosalis