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.

Related Question