Où stocker les paramètres utilisateur pour une application?


12

Si je veux que mon application stocke quelques paramètres, qui persistent à la fermeture d'une application, alors où dois-je les stocker?

Je ne parle de rien de compliqué: deux booléens et une chaîne (bien qu'à l'avenir je puisse vouloir stocker des paramètres plus complexes)

J'ai entendu parler de gconf, dconf, gsettings, etc. Quelle est la méthode "préférée"? De préférence, c'est agréable et facile en Python.


Réponses:


9

gconfest obsolète, donc pour un nouveau projet, je ne l'utiliserais pas. dconfest un backend pour stocker les paramètres, en tant que développeur d'applications, vous ne devriez normalement pas avoir à vous en préoccuper.

Ce dont vous semblez avoir besoin gsettings, c'est d'une API de haut niveau ( documentation API pour C ) pour stocker / récupérer les paramètres sans se soucier comment / où ils sont réellement stockés. gsettingsfait partie de gio, qui est l'un des paquets principaux de gnome (comme glibet gobject). Ce billet de blog donne une brève introduction sur la façon de l'utiliser avec Python.

Si vous ne voulez pas de dépendances gio(par exemple, vous ne développez pas d'application GNOME) et que vous souhaitez stocker des fichiers de configuration simples, je vous suggère d'utiliser le $HOME/.configrépertoire (ou le répertoire défini par $XDG_CONFIG_DIRS) au lieu de $HOME/.your_appname, conformément à la spécification freedesktop .


Il semble que votre lien vers le blog soit mort. Avez-vous une autre chance?
Seth

@Seth, malheureusement, le blog auquel je faisais un lien ne semble plus être disponible. J'ai remplacé le lien par un lien vers un autre article de blog qui devrait également être un bon point de départ.
Marcel Stimberg

10

L'application fonctionne sur tout le système

l'endroit approprié pour stocker les paramètres serait:

/etc/[application]/

où un sous-répertoire est facultatif.


L'application s'exécute en mode par utilisateur

les paramètres doivent être stockés dans l'utilisateur HOME, de préférence dans un répertoire caché:

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

Voir aussi le Debian FHS .


Applications exécutées dans X-Desktop

Les applications pour X-Desktop (par exemple GNOME, KDE, Unity, Xfce) doivent se référer à la spécification de répertoire de base XDG où les emplacements de fichiers suivants sont définis dans des variables locales:

  • $XDG_DATA_HOMEdéfinit le répertoire de base par rapport auquel les fichiers de données spécifiques à l'utilisateur doivent être stockés. Si $ XDG_DATA_HOME n'est pas défini ou vide, une valeur par défaut égale à $ HOME / .local / share doit être utilisée.

  • $XDG_CONFIG_HOMEdéfinit le répertoire de base par rapport auquel les fichiers de configuration spécifiques à l'utilisateur doivent être stockés. Si $ XDG_CONFIG_HOME n'est pas défini ou vide, une valeur par défaut égale à $ HOME / .config doit être utilisée.

  • $XDG_DATA_DIRSdéfinit l'ensemble de répertoires de base ordonné par préférence pour rechercher des fichiers de données en plus du répertoire de base $ XDG_DATA_HOME. Les répertoires dans $ XDG_DATA_DIRS doivent être séparés par un deux-points ':'.

  • If $XDG_DATA_DIRS n'est pas défini ou vide, une valeur égale à / usr / local / share /: / usr / share / doit être utilisée.

  • $XDG_CONFIG_DIRSdéfinit l'ensemble de répertoires de base ordonné par préférence pour rechercher des fichiers de configuration en plus du répertoire de base $ XDG_CONFIG_HOME. Les répertoires de $ XDG_CONFIG_DIRS doivent être séparés par deux points ':'. Si $ XDG_CONFIG_DIRS n'est pas défini ou vide, une valeur égale à / etc / xdg doit être utilisée.


Non, ils devraient être dans /home/<user>/.config/application/
Anonymous

@Anonymous: Ce serait cool d'avoir une référence pour cela. La politique actuelle de Debian requiert FHS 2.3 à l' exception des applications qui sont recommandées pour stocker les paramètres utilisateur dans un fichier dot (ou répertoire) dans le HOME de l'utilisateur.
Takkat

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.