#!/bin/sh

if [[ -f %{_unitdir}/gdm.service ]]; then
	systemctl disable lightdm &>/dev/null
	systemctl disable sddm &>/dev/null
	systemctl disable xdm &>/dev/null
	systemctl enable gdm
fi

X11_LANGS="$(localectl status |grep "X11 Layout: " |rev |cut -d" " -f1 |rev)"
# For (unset) bug
if [ "$X11_LANGS" = "(unset)" ] && [ "$LANG" = "ru_RU.UTF-8" ]; then X11_LANGS="us,ru"; fi
if echo $X11_LANGS |grep -q ru; then
	# Configure keyboard for tty
	localectl set-keymap ruwin_ct_sh-UTF-8
fi

# Set font for tty
sed -i 's/FONT=.*/FONT=latarcyrheb-sun16/' /etc/vconsole.conf

cat >> /usr/bin/keyboard-settings << 'EOF'
#!/bin/bash
# Save X11 langs
X11_LANGS="$(localectl status |grep "X11 Layout: " |rev |cut -d" " -f1 |rev)"
# For (unset) bug
if [ "$X11_LANGS" = "(unset)" ] && [ "$LANG" = "ru_RU.UTF-8" ]; then X11_LANGS="us,ru"; fi

WAYLAND_LANGS="$(echo $X11_LANGS |sed "s/,/\x27), (\x27xkb\x27, \x27/g" |sed "s/\(.*\)/[(\x27xkb\x27, \x27\1\x27)]/")"
# Set wayland langs
gsettings set org.gnome.desktop.input-sources sources "$WAYLAND_LANGS"

# Configure keyboard switchers
gsettings set org.gnome.desktop.wm.keybindings switch-input-source "['<Super>space', '<Alt>Shift_L', '<Shift>Alt_L', '<Control>Shift_L', '<Shift>Control_L', 'XF86Keyboard']"
gsettings set org.gnome.desktop.input-sources xkb-options "['compose:caps', 'grp_led:scroll']"

if echo "$X11_LANGS" |grep -q ru; then
	# Fix bug with cotrol in some apps (set en first)
	gsettings set org.gnome.desktop.input-sources sources "$(echo "$X11_LANGS" |sed "s/\(us,\|,us$\)//" |sed "s/^/us,/" |sed "s/,/\x27), (\x27xkb\x27, \x27/g" |sed "s/\(.*\)/[(\x27xkb\x27, \x27\1\x27)]/")"
fi

# One shot
rm -f ~/.config/autostart/keyboard-settings.desktop
EOF
chmod +x /usr/bin/keyboard-settings
/usr/bin/keyboard-settings

mkdir -p /etc/skel/.config/autostart
cat >> /etc/skel/.config/autostart/keyboard-settings.desktop << 'EOF'
[Desktop Entry]
Type=Application
Name=Keyboard
Comment=Set keyboard to default
Exec=/usr/bin/keyboard-settings
X-GNOME-AutoRestart=true
NoDisplay=true
EOF

# Add extensions
for i in $(ls /home); do
	[ -d /home/$i/.local ] || continue
	! [ -d /home/$i/.local/share/gnome-shell/extensions ] || continue
	if [ -d %{_datadir}/gnome-shell-rosa-extensions/extensions/ ]; then
		mkdir -p /home/$i/.local/share/gnome-shell/extensions/ /home/$i/.config/dconf
		cp -rf %{_datadir}/gnome-shell-rosa-extensions/extensions /home/$i/.local/share/gnome-shell/
		if echo $X11_LANGS |grep -q ru; then
			cp -f %{_datadir}/gnome-shell-rosa-extensions/user /home/$i/.config/dconf/user
		else
			cp -f %{_datadir}/gnome-shell-rosa-extensions/user-en /home/$i/.config/dconf/user
			pushd /home/$i/.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 $i:$i /home/$i/.local/share/gnome-shell/extensions /home/$i/.config/dconf
	fi
done
