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.