Skip to content

Commit 5aad97e

Browse files
committed
just: Make factory reset of Gidro-OS settings more reliable
Instead of manually inputting keys, we get them automatically.
1 parent 501f4c1 commit 5aad97e

File tree

2 files changed

+61
-15
lines changed

2 files changed

+61
-15
lines changed
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
#!/usr/bin/env bash
2+
3+
# Read gschema keys from dconf &/or gschema-overrides
4+
5+
declare -a GSCHEMA
6+
declare -a GSCHEMA_KEYS
7+
declare -a GSCHEMA_RESULTS
8+
9+
for file in "$@"; do
10+
while IFS= read -r line; do
11+
# Check for lines starting with [
12+
if [[ $line =~ \[(.*)\] ]]; then
13+
extracted_word="${BASH_REMATCH[1]}"
14+
if [[ $extracted_word == *"/"* ]]; then
15+
extracted_word="/$extracted_word"
16+
fi
17+
GSCHEMA+=("$extracted_word")
18+
j=0
19+
while IFS= read -r next_line; do
20+
if [[ -z $next_line || $next_line =~ ^# ]]; then
21+
break
22+
fi
23+
if [[ $next_line =~ ^([^=]*)= ]]; then
24+
GSCHEMA_KEYS[j]="${BASH_REMATCH[1]}"
25+
if [[ $extracted_word == *"/"* ]]; then
26+
GSCHEMA_RESULTS+=("${GSCHEMA[i]}/${GSCHEMA_KEYS[j]}")
27+
else
28+
GSCHEMA_RESULTS+=("${GSCHEMA[i]} ${GSCHEMA_KEYS[j]}")
29+
fi
30+
((j++))
31+
fi
32+
done
33+
((i++))
34+
fi
35+
done < "$file"
36+
done
37+
38+
# Output the results
39+
printf "%s\n" "${GSCHEMA_RESULTS[@]}"
40+

files/justfiles/gidro-os.just

Lines changed: 21 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -87,21 +87,27 @@ factory-reset ACTION="prompt":
8787
dconf reset -f /
8888
echo 'Factory-reset of all Gidro-OS settings completed. Please restart your system.'
8989
elif [ "$OPTION" == "Factory-reset Gidro-OS modified settings only" ] || [ "${OPTION,,}" == "settings-gidro-os" ]; then
90-
gsettings reset org.gnome.desktop.app-folders.folder:/org/gnome/desktop/app-folders/folders/Utilities/ name
91-
gsettings reset org.gnome.desktop.app-folders.folder:/org/gnome/desktop/app-folders/folders/Utilities/ apps
92-
gsettings reset org.gnome.desktop.app-folders folder-children
93-
gsettings reset org.gnome.desktop.background picture-options
94-
gsettings reset org.gnome.desktop.background picture-uri
95-
gsettings reset org.gnome.desktop.background picture-uri-dark
96-
gsettings reset org.gnome.desktop.background primary-color
97-
gsettings reset org.gnome.desktop.background secondary-color
98-
gsettings reset org.gnome.desktop.input-sources sources
99-
gsettings reset org.gnome.desktop.input-sources mru-sources
100-
gsettings reset org.gnome.desktop.interface show-battery-percentage
101-
gsettings reset org.gnome.desktop.peripherals.keyboard numlock-state
102-
gsettings reset org.gnome.settings-daemon.plugins.power power-button-action
103-
gsettings reset org.gnome.shell favorite-apps
104-
gsettings reset org.gnome.system.locale region
90+
GSCHEMA_PRE_KEYS=($(read-gschema-keys "/usr/share/glib-2.0/schemas/zz1-gidro.gschema.override" "/usr/share/glib-2.0/schemas/zz2-bluebuild-wallpapers.gschema.override"))
91+
# New array to hold merged elements
92+
GSCHEMA_KEYS=()
93+
# Loop through the original array
94+
for ((i=0; i<${#GSCHEMA_PRE_KEYS[@]}; i+=2)); do
95+
# Check if the next element exists
96+
if [[ $((i+1)) -lt ${#GSCHEMA_PRE_KEYS[@]} ]]; then
97+
# Merge current and next element
98+
GSCHEMA_KEYS+=("${GSCHEMA_PRE_KEYS[i]} ${GSCHEMA_PRE_KEYS[i+1]}")
99+
else
100+
# If odd number of elements, add the last one as is
101+
GSCHEMA_KEYS+=("${GSCHEMA_PRE_KEYS[i]}")
102+
fi
103+
done
104+
DCONF_KEYS=($(read-gschema-keys "/etc/dconf/db/distro.d/01-gidro"))
105+
for gschema_key in "${GSCHEMA_KEYS[@]}"; do
106+
gsettings reset "${gschema_key}"
107+
done
108+
for dconf_key in "${DCONF_KEYS[@]}"; do
109+
dconf reset "${dconf_key}"
110+
done
105111
# This is needed to reset system & user extensions
106112
dconf reset -f /org/gnome/shell/extensions/
107113
gsettings reset org.gnome.shell enabled-extensions

0 commit comments

Comments
 (0)