Dlaczego niektóre aplikacje używają ~ / .config / appname do swoich danych konfiguracyjnych, podczas gdy inne używają ~ / .appname?


37

Zauważyłem, że niektóre aplikacje umieszczają swoje pliki konfiguracyjne, ~/.config/appnamepodczas gdy inne używają ~/.appname(klasyczny sposób, AFAIK) do tego. Jaki jest sens tego rozróżnienia i co może być lepszym do rozważenia dla mojego zastosowania?

AKTUALIZACJA: Wygląda na to, że mój (domyślnie XUbuntu 11.10) $ XDG_CONFIG_HOME jest ustawiony na ~/i większość aplikacji w moim systemie (takich jak Mozilla Firefox, Adobe Flash Player, Midnight Commander, Opera, Wine itp.) Jest zgodna z tym. Ale nadal istnieje wiele aplikacji (takich jak Compiz, Deadbeef, VLC, Qt Creator, Google Chrome, XFCE itp.) ~/.config/. Inną podejrzaną rzeczą jest to, że katalogi ~/.config/same w sobie nie są ukryte (bez kropek w nazwach) - czy katalogi konfiguracji aplikacji nie powinny mieć stałych własnych nazw bez zależności od lokalizacji (wartość $ XDG_CONFIG_HOME)?

Odpowiedzi:


44

Uzupełnienie doskonałej odpowiedzi Jasonwryan, która rozwiązuje niektóre z twoich problemów:

  • Twój nie$XDG_CONFIG_HOME jest ustawiony na . Po prostu nie jest ustawione. Dlatego aplikacje zgodne ze specyfikacją XDG używają wartości domyślnej~/~/.config

  • Katalogi w środku /.confignie są ukryte, ponieważ nie muszą. Sensem użyciu ~/.configdir jest un-bałaganu użytkownik użytkownika $HOME. Ponieważ znajdują się już w osobnym, ukrytym katalogu, nie trzeba się w nich ukrywać.

  • Oprogramowanie, które nie wynika spec (niestety nadal zdecydowana większość) użyć ukrytego dir dla swoich ustawień (jak ~/.myapp) jako próba nie zaśmiecać użytkownika $HOME. To (trochę) działa, ale wciąż jest to złe podejście, gdy na przykład próbujesz wykonać kopię zapasową ustawień i „dużych danych” (takich jak Zdjęcia, Wideo, Muzyka) osobno. Posiadanie wszystkich ustawień w jednym miejscu, bez mieszania z danymi użytkownika, jest znacznie lepszym podejściem

  • Jeśli chodzi o „konieczności stałej nazwy, niezależnie od tego, gdzie XDG_CONFIG_HOMEwskazuje” , oni już zrobić: to jest appname bez wiodącego kropką. Pamiętaj: używane $HOME/.appnamesą te, które ignorują specyfikację XDG. Używają zakodowanej ścieżki.

  • Jeśli chodzi o twoje aplikacje, skorzystaj ze standardu XDG ! Błagam, a twoi użytkownicy będą wdzięczni za to, że nie zaśmiecałeś już ich $ HOME.


4
Chcę tylko powiedzieć, że twoja odpowiedź jest jak najbardziej doskonała! Konwencjonalna mądrość jest szczególnie przydatna, a twoje punkty są bardzo dobrze wyjaśnione :) dzięki!
— Steve Benner

Jaka jest różnica między listą ukrytych plików w katalogu HOME a listą nie ukrytych plików w ukrytym katalogu konfiguracji? Dla mnie jest tak szeroki, jak długi.
— ceving

@ceving: Widzę dwie główne różnice, kosmetyczną i praktyczną: z twojego $HOMEpunktu widzenia jest to jeden ~/.configwpis zamiast kilku, może dziesiątek. I znacznie ułatwia tworzenie kopii zapasowych ustawień (lub ich wykluczanie)! Jak odróżnić ustawienia oprogramowania od, powiedzmy, twojego ~/Documentslub twojego ~/.cache?
— MestreLion

24

Ponieważ aplikacje, w których umieszczane są pliki konfiguracyjne, $HOMEignorują specyfikację katalogu podstawowego XDG , w szczególności:

Istnieje jeden katalog podstawowy, względem którego powinny zostać zapisane pliki konfiguracyjne specyficzne dla użytkownika. Ten katalog jest zdefiniowany przez zmienną środowiskową $ XDG_CONFIG_HOME ...

Jeśli $ XDG_CONFIG_HOME nie jest ustawiony lub pusty, należy użyć wartości domyślnej równej $ HOME / .config.

Wygląda na to, że mój (domyślnie XUbuntu 11.10) $XDG_CONFIG_HOMEjest ustawiony na ~/, ale wciąż jest wiele aplikacji używających~/.config/
— Ivan

3
Ta odpowiedź jest daleka od ukończenia. Mianowicie wydaje się to sugerować, że specyfikacja istnieje od pierwszego dnia i tylko aplikacje ignorowały ją od samego początku. Ale tak naprawdę istnieje całkiem sporo aplikacji, które są dostępne znacznie dłużej niż XDG ze specyfikacją.
— Ruslan

Wersja 0.7 Standard poeterski. To musi być naprawdę ważne. Czy ktoś może wyjaśnić, który problem rozwiązuje standard?
— ceving

@ Ruslan: Istnieje od 2003 roku. To 15 lat temu! To prawda, że ​​nie jest to pierwszy dzień, a wcześniej powstało wiele programów. Ale każde takie oprogramowanie najprawdopodobniej miało wiele aktualizacji do dziś, więc można śmiało powiedzieć, że te, które nie migrowały do ​​standardu XDG, celowo zdecydowały się je zignorować.
— MestreLion

@ceving: rozwiązuje problem organizowania katalogów użytkownika w ten sam sposób /: nie mieszanie danych z plikami wykonywalnymi z konfiguracją. ~/.configjest odpowiednikiem użytkownika /etc, co znacznie pomaga na przykład w tworzeniu kopii zapasowych. Bez tego /.configkopie zapasowe ustawień musiałyby albo ręcznie dołączać wszystkie katalogi aplikacji, albo ręcznie wykluczać katalogi „big data” wszystkich użytkowników (filmy, muzyka i inne osobiste katalogi, które mógł stworzyć).
— MestreLion

7

Bardziej kontrowersyjna odpowiedź to:

  • ~/.configjest wartością domyślną dla standardu XDG, który dotyczy tylko aplikacji zgodnych ze standardami FreeDesktop.org (również poprzez użycie $XDG_CONFIG_HOMEzmiennej).
  • ~/.appname istniał przed standardem freedesktop
  • Nie wszystkim podoba się standard freedesktop
  • Moim zdaniem „zagracenie” $HOMEnie stanowi problemu.

2
To nie jest kontrowersyjna odpowiedź, jest to myląca i po prostu błędna odpowiedź: - Obecnie mam 120 katalogów ~/.config, z aplikacji, które nie mają związku z FreeDesktop.org, takich jak Libre Office, Chromium, Potop, wiele gier (w tym, ale nie tylko wszystkie gry korzystające z Unity3D), aplikacje Google (Chrome, Earth), Python (IPython, Eric), emulatory (Muppen 64, Desmune). FreeDesktop.org ma bardzo mało aplikacji. - ~/.appnameto konwencja, która istniała przed XDG, ale większość nadal używanego oprogramowania została stworzona znacznie później niż standard.
— MestreLion

5
- Z perspektywy twórcy oprogramowania nie ma nic, co by się nie podobało lub nie $HOME/.myapp${XDG_CONFIG_HOME:-$HOME/.config}/myapp
— lubiło

Nadal jest standardem Freedesktop, zdefiniowanym tutaj: Specyfikacje.freedesktop.org/basedir-spec/... a które aplikacje mogą nie używać, których nie chcą. Nie wszyscy uważają rozdzielenie na .config za konieczne.
— David Gardner,

To prawda, ale sugerowanie, że aplikacje zgodne ze standardem są w pewnym sensie „aplikacjami FreeDesktop.org”, jest bardzo mylące.
— MestreLion,

2
czy są jakieś korzyści dla ~/.appponad ~/.config/app?
— sam boosalis
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.