#!/bin/bash

Info () {
title="Info"
author="Peter Starfinger"
mail="E-Mail: info@die-starfingers.de"
year="2021"
app="$(basename $0)"
msgid="The Starbuntu application
<i>\$app</i>
was written by"
info="$(gettext "$msgid" | (export PATH `envsubst --variables "$msgid"`; envsubst "$msgid"))"

yad --center --fixed --title="$title" --window-icon="info" --image="info" --borders=20 --text="$info"$'\n'$'\n'"$author"$'\n'"$mail"$'\n'$'\n'"$year"$'\n' --text-align=center --selectable-labels --button="OK" &
wunwa "$title" > /dev/null; xdotool key Home key Down
}

param="$1"
[ "$param" = "info" ] && Info && exit 0

user=$(whoami)
if [ "$user" != "root" ]; then
#    user=$(ls -d1 -birth /tmp/hsperfdata* | tail -n 1)
#    user=${user#*_}
#    cp /home/$user/.config/user-dirs.dirs /tmp/hsperfdata_$user/user-dirs.dirs
#    sed -i "s/\$HOME/\/home\/$user/g" /tmp/hsperfdata_$user/user-dirs.dirs
#    . /tmp/hsperfdata_$user/user-dirs.dirs
    text=$"For a more detailed configuration of the display manager&#10;please run Administration/SDDM Configuration!&#10;"
    title=$"SDDM Quick Setting"
    button=$"Cancel"
    field1="Autologin: "
    field2=$"Login with Password: "
    field3=$"Theme: "
    field4=$"Wallpaper: "
    noali=$"No autologin"
    yes=$"Yes"; no=$"No"

    sddm_file="/etc/sddm.conf"
    ali_cont="$(cat $sddm_file)"
    ali_cont="$(echo "$ali_cont" | grep -v "^#")"
    ali_default="$(echo "$ali_cont" | grep "User=")"
    ali_default="${ali_default#*User=}"
    [ -z "$ali_default" ] && ali_default="$noali"
    ali="$(ls /home)"$'\n'"$noali"
    ali="${ali/$ali_default/\^$ali_default}"
    ali="${ali//$'\n'/\!}"

    auth_file="/etc/pam.d/sddm"
    auth_stat="$(cat "$auth_file" | grep 'sufficient')"
    [ "${auth_stat::1}" = '#' ] && auth_default="$yes" || auth_default="$no"
    auth="$yes"$'\n'"$no"
    auth="${auth/$auth_default/\^$auth_default}"
    auth="${auth//$'\n'/\!}"
    
    sddm_themes="$(ls -p /usr/share/sddm/themes | grep '/')"
    sddm_themes="${sddm_themes//\//}"
    sddm_themes="${sddm_themes//$'\n'/\!}"
    theme_default="$(cat $sddm_file | grep 'Current=')"
    theme_default="${theme_default#*=}"
    sddm_themes="${sddm_themes/$theme_default/\^$theme_default}"

    bg_default="$(cat /usr/share/sddm/themes/$theme_default/theme.conf | grep 'background=')"
    bg_default="${bg_default#*=}"

    portr_default=""

    entries=`yad --center --title="$title" --width=600 --height=200 --window-icon="$HOME/.icons/sddm.png" --borders=10 --text="$text" --text-align=center --form --separator="¦" --field="$field1":CB "$ali" --field="$field2":CB "$auth" --field="$field3":CB "$sddm_themes" --field="$field4":SFL "$bg_default" --file-filter $"Graphic Files "" | *.icon *.png *.PNG *.jpg *.JPG *.jpeg *.JPEG *.svg *.SVG" --add-preview --field="Portrait: ":SFL "$portr_default" --button="$button":1 --button="Info":"$0 info" --button="OK":0`
    
    exitstatus=$?
    
    if [ $exitstatus -eq 0 ]; then
	entries="${entries::-1}"
	portr__default="${entries##*¦}"
	entries="${entries/$portr__default/}"
	ali__default="${entries%%¦*}"
	entries="${entries/$ali__default'¦'/}"
	auth__default="${entries%%¦*}"
	entries="${entries/$auth__default'¦'/}"
	theme__default="${entries%%¦*}"
	entries="${entries/$theme__default'¦'/}"
	bg__default="${entries%%¦*}"

	if [ "$ali__default" != "$ali_default" ] || [ "$auth__default" != "$auth_default" ] || [ "$theme__default" != "$theme_default" ] || [ "$bg__default" != "$bg_default" ] || [ "$portr__default" != "$portr_default" ]; then gsu "$0" "$USER" "$ali__default" "$auth__default" "$theme__default" "$bg__default" "$portr__default"; exit 0; fi
    fi
else
    user="$1"
    ali__default="$2"
    auth__default="$3"
    theme__default="$4"
    bg__default="$5"
    portr__default="$6"
    title="$(gettext "SDDM Quick Setting")"
    noali="$(gettext "No autologin")"
    yes="$(gettext "Yes")"; no="$(gettext "No")"
    ready="$(gettext "Done!")"

    sddm_file="/etc/sddm.conf"
    if [ "$ali__default" = "$noali" ]; then
	sed -i '/\[Autologin\]/,+1 d' $sddm_file
    else
	sed -i '/\[Autologin\]/,+1 d' $sddm_file
	sed -i '/^$/d' $sddm_file
	echo "[Autologin]"$'\n'"User=$ali__default"$'\n' >> $sddm_file
    fi

    auth_file="/etc/pam.d/sddm"
    auth__line="$(cat "$auth_file" | grep 'sufficient')"
    if [ "$auth__default" = "$yes" ]; then
	[ "${auth__line::1}" != "#" ] && sed -i "s/$auth__line/# $auth__line/" $auth_file
    else
	[ "${auth__line::1}" = "#" ] && sed -i "s/$auth__line/${auth__line: 2}/" $auth_file
    fi
    
    sed -i '/\[Theme\]/,+1 d' $sddm_file
    sed -i '/^$/d' $sddm_file
    echo "[Theme]"$'\n'"Current=$theme__default"$'\n' >> $sddm_file
    
    sed -i "s/background=.*/background=${bg__default//\//\\/}/" /usr/share/sddm/themes/$theme__default/theme.conf

    cd /home/$user
    [ -n "$portr__default" ] && convert "$portr__default" -resize 128x128 ./.face.icon || ( [ ! -e ".face.icon" ] && cp /usr/share/sddm/faces/root.face.icon .face.icon )
    [ -e "/usr/share/sddm/faces/$user.face.icon" ] && rm /usr/share/sddm/faces/$user.face.icon
    chown $user:$user .face.icon; setfacl -m u:sddm:x ./; setfacl -m u:sddm:r ./.face.icon

    yad --center --title="$title" --width=300 --window-icon=$HOME/.icons/sddm.png --borders=20 --text="<b>$ready</b>"$'\n' --text-align="center" --button="OK"
fi

exit 0
