GitHunt
KO

korc/gvdb-dumper

gvdb-dumper (or dconf dump-file) is a CLI program for dumping a binary GVariant Database file (e.g. ~/config/dconf/user) into a human-readable INI format to stdout.

gvdb-dumper (or dconf dump-file)

The gvdb-dumper (or dconf dump-file) is a CLI program for dumping a binary GVariant Database file into a human-readable ini format to stdout.

The internal database for dconf and gsettings uses the GVDB (GVariant Database) format, and is typically stored at $XDG_CONFIG_HOME/dconf/user.

Thanks to this tool, you can achieve the same effect as dconf dump / without having to jump through hoops in order to load a given dconf database file into your currently running dconf server, as described in “How can I view the content of a backup of the dconf database file? [Unix & Linux StackExchange]

The repository is modeled after the official GVDB repository, with the gvdb-dumper branch adding gvdb/gvdb-dumper.c and modifying meson.build to add the gvdp-dumper target.

The dumping logic is closely modeled after dconf/bin/dconf.c, with the dependency on DConfClient replaced by a simple GvdTable loaded in memory.

Install

Simply download the compiled binary executables from the Releases and make it executable (chmod +x gvdb-dumper). Place the program somewhere in your $PATH if you want to easily access it by name from anywhere.

Uninstall

Simply delete the executable gvdb-dumper file. This is a simple self-contained and stateless program that does not leave anything behind, so no particular cleanup is needed.

Examples

Inspect current dconf gsettings:

$ gvdb-dumper ~/.config/dconf/user | head
[ca/desrt/dconf-editor]
saved-pathbar-path='/com/github/stunkymonkey/nautilus-open-any-terminal/terminal'
saved-view='/com/github/stunkymonkey/nautilus-open-any-terminal/terminal'
show-warning=false
window-height=500
window-is-maximized=false
window-width=540

[com/github/stunkymonkey/nautilus-open-any-terminal]
terminal='alacritty'

The above command should be the same as running dconf dump /:

$ sha256sum <(dconf dump /) <(gvdb-dumper ~/.config/dconf/user)
28dd96f4163e26765e598f519986e572735f3c8c22a88cd6e58a356b27519d74  /proc/self/fd/12
28dd96f4163e26765e598f519986e572735f3c8c22a88cd6e58a356b27519d74  /proc/self/fd/13

Compare current gsettings with a backup:

$ diff --unified <(gvdb-dumper ~/.config/dconf/user) <(gvdb-dumper /run/media/username/BACKUPS/2026-01/.config/dconf/user)
@@ -1,11 +1,14 @@
 [ca/desrt/dconf-editor]
-saved-pathbar-path='/org/gnome/nautilus/window-state/'
-saved-view='/org/gnome/nautilus/'
+saved-pathbar-path='/com/github/stunkymonkey/nautilus-open-any-terminal/terminal'
+saved-view='/com/github/stunkymonkey/nautilus-open-any-terminal/terminal'
 show-warning=false
 window-height=500
 window-is-maximized=false
 window-width=540

+[com/github/stunkymonkey/nautilus-open-any-terminal]
+terminal='alacritty'
+
 [desktop/ibus/general]
 preload-engines=['xkb:us::eng', 'xkb:jp::jpn', 'mozc-off', 'mozc-on', 'mozc-jp']
 use-system-keyboard-layout=true
@@ -41,7 +44,7 @@ height=940
 width=1648

 [org/gnome/nautilus/icon-view]
-default-zoom-level='large'
+default-zoom-level='medium'

 [org/gnome/nautilus/preferences]
 default-folder-viewer='icon-view'

Use gvdb-dumper as a textconv filter for diffing dconf/user in case you want to track it with git:

$ tail --lines 2 ~/.gitconfig
[diff "gvdb-dumper"]
	textconv = gvdb-dumper

$ tail --lines 2 .gitattributes
dconf/user	diff=gvdb-dumper

$ git log -1 -p dconf/user
commit 79f8750
Author: precondition <57645186+precondition@users.noreply.github.com>
Date:   Sat Jan 24 22:08:30 2026 +0100

    Update last folder path

diff --git a/dconf/user b/dconf/user
index a1166bd..97b3d14 100644
--- a/dconf/user
+++ b/dconf/user
@@ -54,6 +54,9 @@ migrated-gtk-settings=true
 initial-size=(936, 1017)
 initial-size-file-chooser=(890, 550)

+[org/gnome/portal/filechooser/firefox]
+last-folder-path='/home/username/temp'
+
 [org/gnome/portal/filechooser/org.gnome.Nautilus]
 last-folder-path='/usr/share/icons/MoreWaita/scalable/places'

Languages

C96.6%Meson3.4%
GNU Lesser General Public License v2.1
Created March 22, 2026
Updated March 22, 2026