43 lines
1 KiB
Text
43 lines
1 KiB
Text
|
|
#!/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 ""
|