Perché alcune applicazioni usano ~ / .config / appname per i loro dati di configurazione mentre altre usano ~ / .appname?


37

Ho notato che alcune applicazioni mettono i loro file di configurazione ~/.config/appnamementre altri usano ~/.appname(il modo classico, AFAIK) per questo. Qual è il senso di questa distinzione e cosa potrebbe essere meglio considerare per una mia applicazione?

AGGIORNAMENTO: Sembra che il mio (predefinito di XUbuntu 11.10) $ XDG_CONFIG_HOME sia impostato ~/e che la maggior parte delle applicazioni nel mio sistema (come Mozilla Firefox, Adobe Flash Player, Midnight Commander, Opera, Wine, ecc.) Siano conformi a questo. Ma ci sono ancora molte applicazioni (come Compiz, Deadbeef, VLC, Qt Creator, Google Chrome, XFCE, ecc.) Che usano ~/.config/invece. Un'altra cosa sospetta è che le directory in ~/.config/non sono esse stesse nascoste (nessun punto nei loro nomi) - non ci si aspetta che le directory di configurazione dell'applicazione abbiano nomi propri costanti senza dipendere dalla posizione (valore $ XDG_CONFIG_HOME)?

Risposte:


44

Un complemento alla grande risposta di Jasonwryan, che affronta alcuni dei tuoi problemi:

  • Il tuo non$XDG_CONFIG_HOME è impostato su . Semplicemente non è impostato. Quindi le applicazioni che seguono le specifiche XDG utilizzano l'impostazione predefinita~/~/.config

  • Le directory all'interno /.confignon sono nascoste perché non devono. Il punto centrale dell'uso di una ~/.configdirectory è di disordinare l'utente $HOME. Dal momento che sono già in una directory separata e nascosta, non è necessario essere nascosti all'interno.

  • I software che non seguono le specifiche (purtroppo comunque la stragrande maggioranza) usano una directory nascosta per le loro impostazioni (come ~/.myapp) come un tentativo di non ingombrare l'utente $HOME. Funziona (in qualche modo), ma è ancora un cattivo approccio quando, ad esempio, si tenta di eseguire il backup delle impostazioni e dei "big data" (come immagini, video, musica) separatamente. Avere tutte le impostazioni in un unico posto, senza mescolarsi con i dati dell'utente, è un approccio molto migliore

  • Per quanto riguarda "avere nomi costanti indipendentemente da dove XDG_CONFIG_HOMEpunta" , lo fanno già: è appname senza il punto iniziale. Ricorda: quelli che usano $HOME/.appnamesono quelli che ignorano le specifiche XDG. Usano un percorso hardcoded.

  • Per quanto riguarda le tue applicazioni, utilizza lo standard XDG ! Ti prego, e i tuoi utenti ti diranno grazie per non aver ingombrato più i loro $ HOME.


4
Voglio solo dire la vostra risposta è più eccellente! La saggezza convenzionale è particolarmente utile e i tuoi punti sono molto ben spiegati :) grazie!
Steve Benner,

Qual è la differenza tra un elenco di file nascosti nella directory HOME e un elenco di file non nascosti in una directory di configurazione nascosta? Per me è tanto largo quanto lungo.
ceving

@ceving: vedo 2 differenze principali, una cosmetica e una pratica: dal tuo $HOMEpunto di vista, è una ~/.configvoce singola anziché molte, forse dozzine. E semplifica notevolmente il backup delle tue impostazioni (o escludendole)! Come distinguere le impostazioni del software, per esempio, dal tuo ~/Documentso dal tuo ~/.cache?
MestreLion,

24

Perché quelle applicazioni che inseriscono i file di configurazione $HOMEignorano la specifica della directory di base XDG , in particolare:

Esiste una singola directory di base relativa alla quale devono essere scritti i file di configurazione specifici dell'utente. Questa directory è definita dalla variabile d'ambiente $ XDG_CONFIG_HOME ...

Se $ XDG_CONFIG_HOME non è impostato o vuoto, dovrebbe essere usato un valore predefinito uguale a $ HOME / .config.

Sembra che il mio (predefinito XUbuntu 11.10) $XDG_CONFIG_HOMEsia impostato su ~/, ma ci sono ancora molte applicazioni che usano~/.config/
Ivan

3
Questa risposta è tutt'altro che completa. Vale a dire, sembra implicare che le specifiche siano state presenti fin dal primo giorno, e sono solo le app che l'hanno ignorata dall'inizio. Ma in realtà ci sono alcune app che sono in circolazione da molto più tempo di XDG con le sue specifiche.
Ruslan,

Una versione 0.7 Poettering standard. Questo deve essere davvero importante. Qualcuno può spiegare quale problema risolve lo standard?
ceving il

@Ruslan: è lì dal 2003. Sono passati 15 anni ! È vero, non è il primo giorno e molti software sono stati creati prima. Ma molto probabilmente un software simile avrebbe avuto molti aggiornamenti ancora in uso oggi, quindi è sicuro dire che quelli che non sono migrati allo standard XDG hanno scelto deliberatamente di ignorarlo.
MestreLion,

@ceving: risolve il problema di organizzare le directory dell'utente allo stesso modo in cui /è organizzato: non mescolare i dati con gli eseguibili con la configurazione. ~/.configè la controparte dell'utente /etce questo aiuta enormemente nei backup, ad esempio. Senza /.config, qualsiasi backup delle impostazioni dovrebbe includere manualmente tutte le directory delle app o escludere manualmente le directory "big data" di tutti gli utenti (video, musica e qualsiasi altra directory personale che potrebbe aver creato).
MestreLion,

7

Una risposta più controversa è:

  • ~/.configè il valore predefinito per lo standard XDG, che si applica solo alle applicazioni che aderiscono agli standard FreeDesktop.org (anche tramite l'uso della $XDG_CONFIG_HOMEvariabile).
  • ~/.appname esisteva prima dello standard freedesktop
  • Non a tutti piace lo standard freedesktop
  • "Il disordine" $HOMEnon è un problema, secondo me.

2
Non è una risposta controversa, è fuorviante e chiaramente sbagliata: - Attualmente ho 120 directory su ~/.config, da applicazioni che non hanno alcuna relazione con FreeDesktop.org, come Libre Office, Chromium, Deluge, molti giochi (inclusi ma non solo tutti i giochi che utilizzano Unity3D), app Google (Chrome, Earth), roba Python (IPython, Eric), emulatori (Muppen 64, Desmune). FreeDesktop.org stesso ha pochissime applicazioni. - ~/.appnameè una convenzione esistente prima di XDG, ma la maggior parte dei software ancora in uso oggi è stata creata dopo lo standard.
MestreLion,

5
- Dal punto di vista di uno sviluppatore di software, non c'è niente da apprezzare o non piacere in uno standard di directory, cambia semplicemente la costante di dir di salvataggio da $HOME/.myappa${XDG_CONFIG_HOME:-$HOME/.config}/myapp
MestreLion

È ancora uno standard di freedesktop, definito qui: Specifiche.freedesktop.org/basedir-spec/… e quali applicazioni sono libere di non utilizzare e non desiderano. Non tutti ritengono necessaria la separazione in .config.
David Gardner,

È vero, ma implica che le applicazioni che seguono lo standard sono in qualche modo "applicazioni FreeDesktop.org" molto fuorvianti.
MestreLion

2
ci sono dei vantaggi da ~/.appsuperare ~/.config/app?
Sam Boosalis,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.