Dove archiviare le impostazioni utente per un'app?


12

Se voglio che la mia applicazione memorizzi alcune impostazioni, che persistono alla chiusura di un'applicazione, dove devo memorizzarle?

Non sto parlando di nulla di complicato: due booleani e una stringa (anche se in futuro potrei voler memorizzare impostazioni più complesse)

Ho sentito gconf, dconf, gsettings, ecc. Tutti citati. Qual è il metodo "preferito"? Preferibilmente uno che è carino e facile in Python.


Risposte:


9

gconfè deprecato, quindi per un nuovo progetto non lo userei. dconfè un back-end per l'archiviazione delle impostazioni, in quanto sviluppatore di applicazioni normalmente non dovresti preoccuparti.

Ciò di cui sembra aver bisogno è gsettingsun'API di alto livello ( documentazione API per C ) per archiviare / recuperare le impostazioni senza preoccuparsi di come / dove sono effettivamente archiviate. gsettingsfa parte di gio, che è uno dei pacchetti principali di gnome (like glibe gobject). Questo post sul blog fornisce una breve introduzione su come usarlo con Python.

Se non si desidera alcuna dipendenza gio(ad es. Non si sta sviluppando un'applicazione GNOME) e si desidera archiviare semplici file di configurazione, suggerirei di utilizzare la $HOME/.configdirectory (o qualunque directory definita da $XDG_CONFIG_DIRS) anziché $HOME/.your_appname, in linea con le specifiche di freedesktop .


Sembra che il tuo link al post del blog sia morto. Qualche possibilità ne hai un'altra?
Seth,

@Seth purtroppo il post sul blog che stavo collegando non sembra più disponibile. Ho sostituito il link con un link ad un altro post sul blog che dovrebbe essere anche un buon punto di partenza.
Marcel Stimberg

10

L'applicazione funziona a livello di sistema

il luogo appropriato per memorizzare le impostazioni sarebbe:

/etc/[application]/

dove una sottodirectory è facoltativa.


L'applicazione viene eseguita in modalità per utente

le impostazioni devono essere archiviate nella HOME dell'utente, preferibilmente in una directory nascosta:

/home/<user>/<.application>/

Vedi anche Debian FHS .


Applicazioni in esecuzione in X-Desktop

Le applicazioni per X-Desktop (ad esempio GNOME, KDE, Unity, Xfce) devono fare riferimento alla specifica della directory di base XDG in cui i seguenti percorsi dei file sono definiti nelle variabili locali:

  • $XDG_DATA_HOMEdefinisce la directory di base relativa a quali file di dati specifici dell'utente devono essere memorizzati. Se $ XDG_DATA_HOME non è impostato o vuoto, è necessario utilizzare un valore predefinito pari a $ HOME / .local / share.

  • $XDG_CONFIG_HOMEdefinisce la directory di base relativa a quali file di configurazione specifici dell'utente devono essere memorizzati. Se $ XDG_CONFIG_HOME non è impostato o vuoto, deve essere utilizzato un valore predefinito pari a $ HOME / .config.

  • $XDG_DATA_DIRSdefinisce il set di directory di base ordinato per preferenza per la ricerca di file di dati oltre alla directory di base $ XDG_DATA_HOME. Le directory in $ XDG_DATA_DIRS dovrebbero essere separate da due punti ':'.

  • If $XDG_DATA_DIRS non è impostato o vuoto, deve essere usato un valore uguale a / usr / local / share /: / usr / share /.

  • $XDG_CONFIG_DIRSdefinisce la serie ordinata di preferenze di directory di base per la ricerca di file di configurazione oltre alla directory di base $ XDG_CONFIG_HOME. Le directory in $ XDG_CONFIG_DIRS devono essere separate da due punti ':'. Se $ XDG_CONFIG_DIRS non è impostato o vuoto, è necessario utilizzare un valore uguale a / etc / xdg.


No, dovrebbero essere in /home/<user>/.config/application/
Anonimo

@Anonimo: Sarebbe bello avere un riferimento per questo. La presente politica Debian richiede FHS 2.3 con l' eccezione che le applicazioni sono consigliate per memorizzare le impostazioni dell'utente in un file punto (o directory) nella HOME dell'utente.
Takkat,

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.