GNOME desktop lacks a serious set of UX improvements when it comes to displaying possible functionalities for each application and its settings.

Sometimes users end up not even knowing about the existence of these settings and what they could do for them.

But Dconf exists, and it allows you to uncover these hidden features.

What are Dconf, D-Bus and GSettings?

As a background story, you should know that developers usually avoid using hard-coded configuration values inside their programs, as they prefer to define them in a better separate structure. This helps a lot because it adds the possibility for applications to communicate with other applications when needed, ending in providing the ability to change settings for end users through the GUI, besides other features under the hood.

The D-Bus messaging system is what allows applications to communicate with each other in Linux. And GNOME uses a low-level API called Dconf to quickly build configuration possibilities on top of D-Bus to provide an interface for each application to list & edit its settings. Dconf is considered to be a low-level API, so GNOME provided another layer named GSettings that specially allows storing, accessing and editing its GNOME applications’ settings.

dconf 5
Dconf architecture, source from Wikipedia by JayBeeDe: https://en.wikipedia.org/wiki/Dconf#/media/File:Architecture_de_dconf.png

So when you open your GNOME Control Center and change a specific setting, what happens in the background is that a specific GSettings key related to that setting is changed with the new value you have entered/chosen.

Where’s the issue, you may ask? The issue is that there are tons of possible features and options you can enable in various GNOME applications using Dconf. And those settings are sadly not normally displayed in the settings windows for GNOME applications, leaving most of the GNOME userbase unaware of the existence of such features and settings.

Installing Dconf Editor

dconf 7
Dconf-Editor

Luckily, there’s a very nice GUI program called “Dconf-editor” that allows you to list all the possible configuration keys in the system and edit them easily. So you can use this program to browse your hidden settings and modify them if you wish to.

To install it on Ubuntu, run the following command:

sudo apt install dconf-editor

On Fedora:

sudo dnf install dconf-editor

For other distributions just search for it in your package manager.

Example Features to Enable via Dconf Editor

So this is the tricky part.

Navigate to the to /org/gnome path, where you will find all the GNOME applications that you can tweak from there:

dconf 9

From here you can start browsing each application’s settings and modify them according to your needs BUT take the following into account:

  1. Some changes that you make may result in a broken system or functionality of the app you are modifying its settings. So carefully think about what you are doing.
  2. Not all possible settings here are implemented in the apps their selves. For example, you may find a setting that says “Use me to change how the calendar in the Shell looks like”, but even if you change it, nothing will happen. So it is up to you to figure out what works and what does not.

So here’s an example feature that you can enable via this method, which is the GNOME Shell hot corners (Displaying the overview window by hovering the upper left corner). You can enable it or disable it from here:

dconf 11

Another thing you can modify is whether you would like your writing cursor to blink or not? And in what speed? You can choose to freeze it if you want:

dconf 13

You can also choose whether you want overlay scrollbars or not:

dconf 15

Here’s how your Nautilus file manager would look with it and without it:

dconf 17
Nautilus without Overlay Scrollbars
dconf 19
Nautilus with Overlay Scrollbars

Under /org/gnome/mutter, you can enable some settings related to window management, such as centralizing new windows or window tiling:

dconf 21

All of these options are sadly not displayed for modification in the GNOME apps their selves. So that’s why this method could be helpful for you.

Of course, you can now continue exploring possible settings and what you can change from here.

Using GSettings from the Command Line

Now say you want to tell a friend that they can easily enable hotcorners on their GNOME Shell desktop, but you don’t want to tell them to go and install Dconf-editor and navigate to here and that…. Instead, you want to give them a single command to do the task.

GSettings can be used for that like the following:

gsettings set org.gnome.desktop.interface enable-hot-corners true

Where org.gnome.desktop.interface is the path to the property you are editing, and enable-hot-corners is the name of that property, and true is its new value (Could be text or numerical or other type of values, depending on the property itself).

You can list all possible GSettings properties and their current values using the following command:

gsettings list-recursively

Which should output:

...
org.gnome.Vino mailto ''
org.gnome.Vino lock-screen-on-disconnect false
org.gnome.Vino use-upnp false
org.gnome.Vino vnc-password 'keyring'
org.gnome.Vino view-only false
com.ubuntu.user-interface.desktop text-scaling-factor 1.0
com.ubuntu.user-interface.desktop scaling-factor uint32 0
com.ubuntu.user-interface.desktop cursor-size 18
org.yorba.shotwell.sharing.publishing-gallery3 last-album ''
org.yorba.shotwell.sharing.publishing-gallery3 url ''
org.yorba.shotwell.sharing.publishing-gallery3 scaling-constraint-id 0
org.yorba.shotwell.sharing.publishing-gallery3 strip-metadata false
org.yorba.shotwell.sharing.publishing-gallery3 scaling-pixels 1024
org.yorba.shotwell.sharing.publishing-gallery3 api-key ''
org.yorba.shotwell.sharing.publishing-gallery3 username ''
org.freedesktop.Tracker.DB journal-rotate-destination ''
org.freedesktop.Tracker.DB journal-chunk-size 50
org.gnome.settings-daemon.plugins.xsettings antialiasing 'rgba'
org.gnome.settings-daemon.plugins.xsettings rgba-order 'rgb'
org.gnome.settings-daemon.plugins.xsettings hinting 'slight'
org.gnome.settings-daemon.plugins.xsettings overrides @a{sv} {}
org.gnome.settings-daemon.plugins.xsettings disabled-gtk-modules @as []
org.gnome.settings-daemon.plugins.xsettings enabled-gtk-modules @as []
org.gnome.settings-daemon.plugins.xsettings priority 0
org.gnome.settings-daemon.plugins.xsettings active true
org.gnome.Mahjongg window-height 600
...

Conclusion

So you now know how to modify GSettings values either from the command line or from the GUI with dconf-editor program. As we said, you should always be cautious about what properties are you modifying and what values are you entering, that’s why we don’t recommend this for non-advanced users.

However, you should now see the problem of GNOME desktop putting these hidden possible features in those deep places, making it harder for people to find them. A UX revamp for GNOME could help!

Subscribe
Notify of
guest

0 Comments
Inline Feedbacks
View all comments

Newsletter

Enter your email address to subscribe to our newsletter. We only send you an email when we have a couple of new posts or some important updates to share.

Recent Comments

Open Source Directory

Join the Force!

For the price of one cup of coffee per month:

  • Support the FOSS Post to produce more content.
  • Get a special account on our website.
  • Remove all the ads you are seeing (including this one!).
  • Get an OPML file containing +70 RSS feeds for various FOSS-related websites and blogs, so that you can import it into your favorite RSS reader and stay updated about the FOSS world!