Skip to content

Commit

Permalink
just: Make factory reset of Gidro-OS settings more reliable
Browse files Browse the repository at this point in the history
Instead of manually inputting keys, we get them automatically.
  • Loading branch information
fiftydinar committed Oct 7, 2024
1 parent 501f4c1 commit 5aad97e
Show file tree
Hide file tree
Showing 2 changed files with 61 additions and 15 deletions.
40 changes: 40 additions & 0 deletions files/0-system/usr/bin/read-gschema-keys
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
#!/usr/bin/env bash

# Read gschema keys from dconf &/or gschema-overrides

declare -a GSCHEMA
declare -a GSCHEMA_KEYS
declare -a GSCHEMA_RESULTS

for file in "$@"; do
while IFS= read -r line; do
# Check for lines starting with [
if [[ $line =~ \[(.*)\] ]]; then
extracted_word="${BASH_REMATCH[1]}"
if [[ $extracted_word == *"/"* ]]; then
extracted_word="/$extracted_word"
fi
GSCHEMA+=("$extracted_word")
j=0
while IFS= read -r next_line; do
if [[ -z $next_line || $next_line =~ ^# ]]; then
break
fi
if [[ $next_line =~ ^([^=]*)= ]]; then
GSCHEMA_KEYS[j]="${BASH_REMATCH[1]}"
if [[ $extracted_word == *"/"* ]]; then
GSCHEMA_RESULTS+=("${GSCHEMA[i]}/${GSCHEMA_KEYS[j]}")
else
GSCHEMA_RESULTS+=("${GSCHEMA[i]} ${GSCHEMA_KEYS[j]}")
fi
((j++))
fi
done
((i++))
fi
done < "$file"
done

# Output the results
printf "%s\n" "${GSCHEMA_RESULTS[@]}"

36 changes: 21 additions & 15 deletions files/justfiles/gidro-os.just
Original file line number Diff line number Diff line change
Expand Up @@ -87,21 +87,27 @@ factory-reset ACTION="prompt":
dconf reset -f /
echo 'Factory-reset of all Gidro-OS settings completed. Please restart your system.'
elif [ "$OPTION" == "Factory-reset Gidro-OS modified settings only" ] || [ "${OPTION,,}" == "settings-gidro-os" ]; then
gsettings reset org.gnome.desktop.app-folders.folder:/org/gnome/desktop/app-folders/folders/Utilities/ name
gsettings reset org.gnome.desktop.app-folders.folder:/org/gnome/desktop/app-folders/folders/Utilities/ apps
gsettings reset org.gnome.desktop.app-folders folder-children
gsettings reset org.gnome.desktop.background picture-options
gsettings reset org.gnome.desktop.background picture-uri
gsettings reset org.gnome.desktop.background picture-uri-dark
gsettings reset org.gnome.desktop.background primary-color
gsettings reset org.gnome.desktop.background secondary-color
gsettings reset org.gnome.desktop.input-sources sources
gsettings reset org.gnome.desktop.input-sources mru-sources
gsettings reset org.gnome.desktop.interface show-battery-percentage
gsettings reset org.gnome.desktop.peripherals.keyboard numlock-state
gsettings reset org.gnome.settings-daemon.plugins.power power-button-action
gsettings reset org.gnome.shell favorite-apps
gsettings reset org.gnome.system.locale region
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"))
# New array to hold merged elements
GSCHEMA_KEYS=()
# Loop through the original array
for ((i=0; i<${#GSCHEMA_PRE_KEYS[@]}; i+=2)); do
# Check if the next element exists
if [[ $((i+1)) -lt ${#GSCHEMA_PRE_KEYS[@]} ]]; then
# Merge current and next element
GSCHEMA_KEYS+=("${GSCHEMA_PRE_KEYS[i]} ${GSCHEMA_PRE_KEYS[i+1]}")
else
# If odd number of elements, add the last one as is
GSCHEMA_KEYS+=("${GSCHEMA_PRE_KEYS[i]}")
fi
done
DCONF_KEYS=($(read-gschema-keys "/etc/dconf/db/distro.d/01-gidro"))
for gschema_key in "${GSCHEMA_KEYS[@]}"; do
gsettings reset "${gschema_key}"
done
for dconf_key in "${DCONF_KEYS[@]}"; do
dconf reset "${dconf_key}"
done
# This is needed to reset system & user extensions
dconf reset -f /org/gnome/shell/extensions/
gsettings reset org.gnome.shell enabled-extensions
Expand Down

0 comments on commit 5aad97e

Please sign in to comment.