Ryan Lortie
desrt@desrt.ca 2012
Jana Švárová
jana.svarova@gmail.com
Petr Kovar
pknbe@volny.cz 2019
Detailed information about profile and profile selection.

# Profiles

A profile is a list of configuration databases. The first database in a profile is the write-to database and the remaining databases are read-only. Each of the system databases is generated from a keyfile directory. Each keyfile directory contains one or more keyfiles. Each keyfile contains at least one dconf path and one or more keys and the corresponding values.

Key pairs which are set in a dconf profile will override the default settings unless there is a problem with the value that you have set.

You will usually want your dconf profile to consist of a user database and at least one system database. The profile must list one database per line.

The first line in a profile is the database that changes are written to. It is usually `user-db:user`. user is the name of the user database which can normally be found in ~/.config/dconf.

A `system-db` line specifies a system database. These databases are found in /etc/dconf/db/.

# Sample profile

user-db:user system-db:local system-db:site

Configuring a single user and multiple system databases allows for layering of preferences. Settings from the `user` database file take precedence over the settings in the `local` database file, and the `local` database file in turn takes precedence over the `site` database file.

However, the order of precedence for locks is reversed. Locks introduced in the `site` or `local` database files take priority over those present in `user`.

The dconf profile for a session is determined at login, so users will have to log out and log in to apply a new dconf user profile to their session.

For more information, see the dconf(7) man page.

# Select a profile

On startup, dconf consults the DCONF_PROFILE environment variable. The variable can specify a relative path to a file in /etc/dconf/profile/, or an absolute path, for example, to the user's home directory.

If the environment variable is set, dconf attempts to open the named profile and aborts if that fails. If the variable is not set, dconf attempts to open the profile named “user”. If that fails, it will fall back to an internal hard-wired configuration.

For more information, see the dconf(7) man page.