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.