Watch
1
0
Fork
You've already forked dotfiles
0
dotfiles/.local/bin/verify-dconf

43 lines
1 KiB
Shell
Executable file

#!/bin/sh
# List GNOME `dconf` keys that are live but not described by ~/.config/gnome-settings/*.ini
set -eu
# Keep in sync with the `RESET_PATHS` in ~/.local/bin/restore-gnome
FILTER='^(org/gnome/|org/gtk/|org/freedesktop/(ibus|tracker)/|ca/desrt/|system/)'
DIR="${XDG_CONFIG_HOME:-$HOME/.config}/gnome-settings"
flat() {
awk '/^\[/ { s = substr($0, 2, length($0) - 2); next }
/^[A-Za-z0-9][A-Za-z0-9_-]*=/ { i = index($0, "="); print s "/" substr($0, 1, i - 1) }'
}
live=$(mktemp) || exit 1
managed=$(mktemp) || exit 1
trap 'rm -f "$live" "$managed"' EXIT INT TERM
dconf dump / | flat | grep -E "$FILTER" | sort -u > "$live"
find "$DIR" -maxdepth 2 -type f -name '*.ini' -exec cat {} + \
| sed "s|/home/user|$HOME|g" \
| flat | grep -E "$FILTER" | sort -u > "$managed"
echo ""
echo "== Live keys NOT in the ~/.config/gnome-settings/*.ini files =="
comm -23 "$live" "$managed"
echo ""
echo ""
echo "== Keys in the ~/.config/gnome-settings/*.ini files but NOT live =="
comm -13 "$live" "$managed"
echo ""