Чому деякі програми використовують ~ / .config / ім'я програми для своїх конфігураційних даних, а інші використовують ~ / .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

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

  • Програмне забезпечення, яке не відповідає специфікаціям (на жаль, все ще переважна більшість), використовує прихований dir для своїх налаштувань (як ~/.myapp), щоб намагатися не захаращувати користувача $HOME. Це (щось на зразок) працює, але це все-таки поганий підхід, коли, наприклад, ви намагаєтесь створити резервну копію своїх налаштувань і своїх "великих даних" (наприклад, картинки, відео, музика) окремо. Налаштування всіх налаштувань в одному місці, без змішування з даними користувача, є набагато кращим підходом

  • Щодо "мати постійні імена незалежно від того, куди XDG_CONFIG_HOMEвказує" , вони вже роблять: такappname без провідної крапки. Пам'ятайте: ті, хто використовує, $HOME/.appname- це ті, що ігнорують XDG Spec. Вони використовують твердо кодований шлях.

  • Що стосується ваших програм, будь ласка, використовуйте стандарт XDG ! Я прошу вас, і ваші користувачі будуть дякувати за те, що ви більше не захаращуєте їх $ HOME.


4
Просто хочу сказати, що ваша відповідь найкраще ! Звичайна мудрість особливо корисна, і ваші бали дуже добре пояснені :) дякую!
Стів Беннер

Де різниця між списком прихованих файлів у каталозі HOME та списком не прихованих файлів у прихованій папці конфігурації? Для мене вона така широка, як і довга.
закінчення

@ceving: я бачу 2 основні відмінності - косметичну та практичну: з вашої $HOMEточки зору, це один ~/.configзапис замість кількох, можливо, десяток з них. І це значно спрощує резервне копіювання налаштувань (або виключаючи їх)! Як ви можете відокремити налаштування програмного забезпечення від, скажімо, вашого ~/Documentsчи вашого ~/.cache?
MestreLion

24

Оскільки ті програми, в які розміщуються конфігураційні файли $HOME, ігнорують специфікацію базового каталогу XDG , зокрема:

Є єдиний базовий каталог, щодо якого слід записати файли конфігурації, визначені користувачем. Цей каталог визначається змінною середовища $ XDG_CONFIG_HOME ...

Якщо $ XDG_CONFIG_HOME не встановлено або порожньо, слід використовувати за замовчуванням $ HOME / .config.

Виглядає як мій (Xubuntu 11.10 по замовчуванням) $XDG_CONFIG_HOMEвстановлена на ~/, але є ще багато додатків , що використовують~/.config/
Іван

3
Ця відповідь далеко не повна. А саме, мабуть, випливає, що специфікація існує з першого дня, і саме додатки ігнорували її з самого початку. Але насправді є досить багато додатків, які існують набагато довше, ніж XDG з його специфікацією.
Руслан

Версія 0.7 стандарту для поетизації. Це має бути справді важливим. Хтось може пояснити, яку проблему вирішує стандарт?
закінчення

@Ruslan: Це там з 2003 року. Це 15 років тому! Щоправда, цього дня не було створено багато програмного забезпечення. Але будь-яке подібне програмне забезпечення, швидше за все, мало багато оновлень, які все ще використовуються сьогодні, тому з впевненістю можна сказати, що ті, хто не перейшов на стандарт XDG, навмисно вирішили його ігнорувати.
MestreLion

@ceving: вона вирішує проблему з тим, як організувати користувацькі режими користувача /: не змішуючи дані з виконуваними файлами з конфігурацією. ~/.configє аналогом користувача /etc, і це надзвичайно допомагає, наприклад, створювати резервні копії. Без /.configбудь-якого резервного копіювання налаштувань доведеться або вручну включати всі файли програм або вручну виключати всі "користувачі" режими "великих даних" (Відео, Музика та будь-які інші персональні режими, які він може створити).
MestreLion

7

Більш суперечлива відповідь:

  • ~/.configє типовим для стандарту XDG, який стосується лише програм, які дотримуються стандартів FreeDesktop.org (також за допомогою використання $XDG_CONFIG_HOMEзмінної).
  • ~/.appname існував до стандарту звільненої вершини
  • Не всім подобається стандарт Freeesktop
  • На $HOMEмою думку, «захаращення» - це не проблема.

2
Це не суперечлива відповідь, це оманливий і явно невірний: - В даний час у мене є 120 каталогів ~/.configіз програм, які не мають відношення до FreeDesktop.org, таких як Libre Office, Chromium, Deluge, безліч ігор (у тому числі, але не тільки всі ігри, що використовують Unity3D), програми Google (Chrome, Earth), речі Python (IPython, Eric), емулятори (Muppen 64, Desmune). Сам FreeDesktop.org має дуже мало застосувань. - ~/.appnameце умовність , яка існувала до XDG, але більшість програмного забезпечення все ще використовується сьогодні був створений шлях після того, як стандарт.
MestreLion

5
- З точки зору розробника програмного забезпечення, у стандартному каталозі нічого не подобається чи не подобається, він просто змінює константу збереження $HOME/.myapp${XDG_CONFIG_HOME:-$HOME/.config}/myapp
режиму

Досі визначений стандарт freedesktop, визначений тут: специфікації.freedesktop.org/ basedir-spec/… і які додатки вільні не використовувати, вони не бажають. Не всі вважають необхідним поділ на .config.
Девід Гарднер

Правда, але маючи на увазі, що програми, які відповідають стандарту, якимось чином є "програмами FreeDesktop.org" - це дуже оманливе.
MestreLion

2
чи є користь ~/.appнад ~/.config/app?
sam boosalis
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.