Ubuntu – Where to store user settings for an app

application-developmentpythonsettings

If I want my application to store a few settings, that persist when an application closes, then where should I store them?

I'm not talking anything complicated: two booleans and a string (although in the future I might want to store more complex settings)

I've heard gconf, dconf, gsettings, etc all mentioned. What is the "preferred" method? Preferably one that's nice and easy in Python.

Best Answer

  • gconf is deprecated, so for a new project I would not use it. dconf is a backend for storing the settings, as an application developer you should normally not have to bother with it.

    What you seem to need is gsettings, a high-level API (API documentation for C) to store/retrieve settings without bothering how/where they are actually stored. gsettings is part of gio, which is one of the core packages of gnome (like glib and gobject). This blog post gives a short introduction how to use it with Python.

    If you do not want any dependencies on gio (e.g. you are not developing a GNOME application) and want to store simple config files, I'd suggest to use the $HOME/.config directory (or whatever directory defined by $XDG_CONFIG_DIRS) instead of $HOME/.your_appname, in line with the freedesktop spec.