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.
Application runs system wide
the appropriate place to store settings would be:
where a subdirectory is optional.
Application runs in a per user mode
settings should be stored in the user HOME, preferably in a hidden directory:
See also the Debian FHS.
Applications running in X-Desktop
Applications for the X-Desktop (e.g. GNOME, KDE, Unity, Xfce) should refer to the XDG Base Directory Specification where the following file locations are defined in local variables:
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 ofgio
, which is one of the core packages of gnome (likeglib
andgobject
). 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.Quickly, which is is one of the newer helpers for application development for Ubuntu, defaults to storing all preferences with desktopcouch. The advantage is that those settings can be synchronized with other installations via the Ubuntu One tools.