#!/bin/bash

# Fix bug with cotrol in some apps (set en first)
if [ ${LANG:0:2} = ru ]; then
	gsettings set org.gnome.desktop.input-sources sources "$(localectl status |grep "X11 Layout: " |rev |cut -d" " -f1 |rev |sed "s/\(us,\|,us$\)//" |sed "s/^/us,/" |sed "s/,/\x27), (\x27xkb\x27, \x27/" |sed "s/^/[(\x27xkb\x27, \x27/" |sed "s/$/\x27)]/")"
fi

# Save wayland langs
WAYLAND_LANGS="$(gsettings get org.gnome.desktop.input-sources sources)"

# Reset extensions
if [ -d /etc/skel/.local/share/gnome-shell/extensions/ ]; then
	mkdir -p /home/$USER/.local/share/gnome-shell/extensions/
	rm -rf /home/$USER/.local/share/gnome-shell/extensions-previous
	mv /home/$USER/.local/share/gnome-shell/extensions{,-previous}
	cp -rf /etc/skel/.local/share/gnome-shell/extensions /home/$USER/.local/share/gnome-shell/
	# Reset extensions hard localization
	if ! [ ${LANG:0:2} = ru ]; then
		pushd /home/$USER/.local/share/gnome-shell/extensions/
			for PATCH in $(ls /usr/share/gnome-shell-rosa-extensions |grep "hard-ru-translate.patch"); do
				patch -p0 -F3 -R </usr/share/gnome-shell-rosa-extensions/$PATCH || :
			done
		popd
	fi
	chown -R $USER:$USER /home/$USER/.local/share/gnome-shell/extensions*
fi

# Reset autostart (desktop icons support)
if [ -d /etc/skel/.config/autostart ]; then
	mkdir -p /home/$USER/.config
	rm -rf /home/$USER/.config/autostart-previous
	mv /home/$USER/.config/autostart{,-previous}
	cp -rf /etc/skel/.config/autostart /home/$USER/.config/
	chown -R $USER:$USER /home/$USER/.config/autostart*
fi

# Reset user's settings
if [ -f /etc/skel/.config/dconf/user ]; then
	umount -l /home/$USER/.config/dconf &>/dev/null || :
	mkdir -p /home/$USER/.config/dconf/
	touch /home/$USER/.config/dconf/user
	rm -f /home/$USER/.config/dconf/user-previous
	mv /home/$USER/.config/dconf/user{,-previous}
	# Localization desktop menu groups
	if [ ${LANG:0:2} = ru ]; then
		cp -f /usr/share/gnome-shell-rosa-extensions/user /home/$USER/.config/dconf/user
	else
		cp -f /usr/share/gnome-shell-rosa-extensions/user-en /home/$USER/.config/dconf/user
	fi
	gsettings set org.gnome.desktop.input-sources sources "$WAYLAND_LANGS"
	chown $USER:$USER /home/$USER/.config/dconf/user*
	TEMPDIR=$(mktemp -d -t ${USER}XXX)
	mkdir -p $TEMPDIR/dconf_{overlay,work}
	mount -t overlay overlay -o lowerdir=/home/$USER/.config/dconf,upperdir=$TEMPDIR/dconf_overlay,workdir=$TEMPDIR/dconf_work /home/$USER/.config/dconf
	chown $USER:$USER /home/$USER/.config/dconf/user*
fi

mkdir -p /home/$USER/.dbus
chown -R $USER:$USER /home/$USER/.dbus

if [ $XDG_SESSION_TYPE = tty ]; then
	if [ ${LANG:0:2} = ru ]; then
		echo "Настройки сброшены. Они применятся после перезагрузки."
	else
		echo "The settings have been reset. It will be applied after reboot."
	fi
else
	if [ ${LANG:0:2} = ru ]; then
		zenity --question --text="Настройки сброшены. Они применятся после перезагрузки.\n\nПерезагрузить компьютер?" --display=:0.0 && systemctl reboot || :
	else
		zenity --question --text="The settings have been reset. It will be applied after reboot.\n\nReboot PC?" --display=:0.0 && systemctl reboot || :
	fi
fi
