web-dev-qa-db-fra.com

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

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

Je ne parle pas de compliqué: deux booléens et une chaîne (même si dans le futur, je souhaiterais peut-être 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, Nice et facile en Python.

12
8128

gconf est obsolète, je ne l'utiliserais donc pas pour un nouveau projet. dconf est un backend pour stocker les paramètres. En tant que développeur d'applications, vous ne devriez normalement pas avoir à vous en soucier.

Vous semblez avoir besoin de gsettings, une API de haut niveau ( documentation de l'API pour C ) permettant de stocker/récupérer les paramètres sans se soucier de savoir comment/où ils sont réellement stockés. gsettings fait partie de gio, qui est l'un des paquets centraux de gnome (comme glib et gobject). Ceci article de blog donne une brève introduction à son utilisation avec Python.

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

9
Marcel Stimberg

L'application fonctionne à l'échelle du système

l'emplacement 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 fonctionnant dans X-Desktop

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

  • $XDG_DATA_HOME dé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 est vide, une valeur par défaut égale à $ HOME/.local/share doit être utilisée.

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

  • $XDG_DATA_DIRS définit l'ensemble de répertoires de base classés par ordre de préférence pour la recherche de 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 deux points ':'.

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

  • $XDG_CONFIG_DIRS définit l'ensemble de répertoires de base classés par ordre de préférence pour la recherche de 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 est vide, une valeur égale à/etc/xdg doit être utilisée.

10
Takkat

Rapidement , qui est l'un des nouveaux assistants pour développement d'applications pour Ubunt , stocke par défaut toutes les préférences avec desktopcouch . L'avantage est que ces paramètres peuvent être synchronisés avec d'autres installations via les outils Ubuntu One.

1
xubuntix