#!/bin/bash

SCRIPT_VER="1.7"

APP="XFCE Desktop"
APP_CATEGORY="Desktop Environments"
APP_SCOPE="system"
APP_ENABLED="yes"
STORED_PASSWORD_SERVICE="user"
SUPPORTED_ON="CentOS7,CentOS8,CentOSStream8,Debian9,Debian10,Ubuntu16.04,Ubuntu18.04,Ubuntu20.04,Ubuntu22.04"
LIBRARY="functions4.sh"

if [ "${SUPPORT-}" = '' ]; then
    SUPPORT="https://installers.rapidseedbox.com/scripts/whmcs_client_installers/support"
fi

LOGFILE="/var/log/whmcs_client_installers/${0}.log"
[ ! -d "/var/log/whmcs_client_installers" ] && mkdir -p "/var/log/whmcs_client_installers"

wget -4 -nc -q --no-check-certificate --timeout=20 --tries=5 ${SUPPORT}/${LIBRARY} >> "${LOGFILE}" 2>&1
if [ ! -f "./${LIBRARY}" ] ; then
    echo "55"
    echo "Error downloading \"${SUPPORT}/${LIBRARY}\"" >> "${LOGFILE}"
    exit 55
fi

# shellcheck source=support/functions4.sh
. "./${LIBRARY}"
SCRIPTENTRY

while : ; do

    main_rc=1

    CHECK_APP ; _rc=$?
    if [ ${_rc} -ne 0 ] ; then
        main_rc=${_rc}
        break
    fi


    case "${LSB_VENDOR}" in
      "CentOS"|"CentOSStream")
          if [ "${LSB_RELEASE}" = "8" ] ; then
              YUM_GROUPINSTALL "Server with GUI" || break
          else
              YUM_GROUPINSTALL "X Window System" || break
          fi
          YUM_GROUPINSTALL "Xfce" || break
          ;;
      "Debian"|"Devuan")
          APT_INSTALL "dbus"  || break
          APT_INSTALL "xfce4" || break
          APT_INSTALL "xfce4-goodies lightdm" || break
          ;;
      "Ubuntu")
          APT_INSTALL \
              "xubuntu-desktop" \
              "xfce4-goodies" \
            || break
          ;;
    esac

    if [ ! -d "${USERHOME}/.config/autostart" ] ; then
        MKDIR "${USERHOME}/.config/autostart" || break
        CHOWN_DIR "${USERNAME}":"${USERNAME}" "${USERHOME}/.config/autostart" || break
    fi
    if [ ! -d "${USERHOME}/bin" ] ; then
        MKDIR "${USERHOME}/bin" || break
        CHOWN_DIR "${USERNAME}":"${USERNAME}" "${USERHOME}/bin" || break
    fi

    # Disable Sensors Viewer app display
    if [ -f "/usr/share/applications/xfce4-sensors.desktop" ] ; then
        RUN_LOG "sed -e '/^Hidden=/d' -i '/usr/share/applications/xfce4-sensors.desktop'"
        RUN_LOG "echo 'Hidden=true' >> '/usr/share/applications/xfce4-sensors.desktop'"
    fi

    # Remove Update-Notifier from autostart
    [ -f "/etc/xdg/autostart/update-notifier.desktop" ] \
        && RM_FILES "/etc/xdg/autostart/update-notifier.desktop"

    # Fetch config files
    WGET "${SUPPORT}/xfcedesktop/xfce-config.tar.gz" \
        && TAR_ZXF "${TMP_DIR}/xfce-config.tar.gz" "${USERHOME}/"
    if [ $? -eq 0 ] ; then
        # Process wallpaper
        case "${LSB_VENDOR}" in
          "CentOS"|"CentOSStream")
              YUM_INSTALL "ImageMagick"
              ;;
          "Debian"|"Devuan"|"Ubuntu")
              APT_INSTALL "imagemagick"
              ;;
        esac
        if [ $? -eq 0 ] ; then
            INFO "Let's make new wallpaper..."
            RUN_LOG "convert '${USERHOME}/Images/${LSB_VENDOR_L}.jpg' \
                       -resize 128x128\> '${TMP_DIR}/logo.jpg' 2>&1"
            RUN_LOG "composite -gravity southeast \
                       '${TMP_DIR}/logo.jpg' \
                       '${USERHOME}/Images/rapidseedbox-wp-template.jpg' \
                       '${USERHOME}/Images/rapidseedbox-wp.jpg' 2>&1"
            # Version info
            RUN_LOG "convert '${USERHOME}/Images/rapidseedbox-wp.jpg' \
                      -gravity southwest \
                      -pointsize 16 \
        	      -fill yellow -annotate +5+2 '${LSB_DESCRIPTION}' \
                    '${USERHOME}/Images/rapidseedbox-wp.jpg' 2>&1"
        else
            CP_FILE "${USERHOME}/Images/rapidseedbox-wp-template.jpg" \
                    "${USERHOME}/Images/rapidseedbox-wp.jpg"
        fi
        CHOWN_DIR "${USERNAME}":"${USERNAME}" "${USERHOME}/Images"
        CHOWN_DIR "${USERNAME}":"${USERNAME}" "${USERHOME}/.config"
    fi

    # Install 'Numix' theme
    oWD="$( pwd )"
    while true ; do
        case "${LSB_VENDOR}" in
          "CentOS"|"CentOSStream")
              [ -f "/etc/yum.repos.d/numix.repo" ] && RM_FILES "/etc/yum.repos.d/numix.repo"
              case "${LSB_VER}" in
                "CentOS8"|"CentOSStream8")
                    if ! RPM_CHECK "raven-release" ; then
                        _raven_repo="https://pkgs.dyn.su/el8/base/x86_64/raven-release-1.0-1.el8.noarch.rpm"
                        RUN_LOG "dnf -y install ${_raven_repo} 2>&1" \
                            || break 2
                        YUM_INSTALL "raven-release" \
                            || break 2
                    fi
                    ;;
              esac
              YUM_INSTALL \
                  "numix-gtk-theme" \
                  "numix-icon-theme" \
                  "numix-icon-theme-circle" \
                  "numix-icon-theme-square" \
                || break 2
              ;;
          "Debian"|"Devuan")
              APT_INSTALL \
                   "git-core" \
                   "build-essential" \
                   "libglib2.0-dev" \
                   "libgdk-pixbuf2.0-dev" \
                   "libxml2-utils" \
                   "make" \
                   "ruby" \
                   "ruby-dev" \
                || break 2
              # GTK theme
              RUN_LOG "gem install sass 2>&1" || break 2
              APT_INSTALL "sassc" || break 2
              GIT_CLONE "https://github.com/numixproject/numix-gtk-theme" \
                        "${TMP_DIR}/numix-gtk-theme" \
                  || break 2
              cd "${TMP_DIR}/numix-gtk-theme"
              RUN_LOG "make 2>&1" || break 2
              RUN_LOG "make install 2>&1" || break 2
              # Icon theme
              GIT_CLONE "https://github.com/numixproject/numix-icon-theme-circle.git" \
                        "${TMP_DIR}/numix-icon-theme-circle" \
                  || break 2
              cd "${TMP_DIR}/numix-icon-theme-circle"
              MV "Numix-Circle" "/usr/share/icons/"
              MV "Numix-Circle-Light" "/usr/share/icons/"
              ;;
          "Ubuntu")
              case "${LSB_VER}" in
                "Ubuntu22.04")
                    ;;
                *)
                    ADD_APT_REPO "ppa:numix/ppa" || break 2
                    APT_UPDATE || break 2
                    ;;
              esac
              APT_INSTALL "numix-gtk-theme" "numix-icon-theme-circle" || break 2
              [ ! -d "${USERHOME}/.config/autostart" ] \
                  && MKDIR "${USERHOME}/.config/autostart"
              cat <<-EOF > "${USERHOME}/.config/autostart/numix.desktop" 2>> "${LOGFILE}"
		xfconf-query -c xsettings -p /Net/ThemeName -s "Numix"
		xfconf-query -c xfwm4 -p /general/theme -s "Numix"
		EOF
              ;;
        esac
        break
    done
    cd "${oWD}"
    #


    # -------------------------------------------------------------------------------- #
    # Process files in user directories                                                #
    # -------------------------------------------------------------------------------- #
    ls -1 "${USERHOME}/.config/xfce4/xfconf/xfce-perchannel-xml" 2>/dev/null | \
      while read -r __file ; do
          RUN_LOG "sed -e 's|###USERNAME###|${USERNAME}|g' \
                       -i '${USERHOME}/.config/xfce4/xfconf/xfce-perchannel-xml/${__file}'"
          RUN_LOG "sed -e 's|###USERUID###|${USERUID}|g' \
                       -i '${USERHOME}/.config/xfce4/xfconf/xfce-perchannel-xml/${__file}'"
          RUN_LOG "sed -e 's|###USERHOME###|${USERHOME}|g' \
                       -i '${USERHOME}/.config/xfce4/xfconf/xfce-perchannel-xml/${__file}'"
      done
    case "${LSB_VER}" in
      "Ubuntu22.04")
          cat <<-EOF > "${USERHOME}/.config/autostart/xfce-settings.desktop"
		[Desktop Entry]
		Type=Application
		Name=XFCE settings
		Exec=/usr/local/bin/xfce-settings.sh
		Terminal=false
		EOF
          CHOWN_FILE "${USERNAME}":"${USERNAME}" "${USERHOME}/.config/autostart/xfce-settings.desktop"

          cat <<-EOF > "/usr/local/bin/xfce-settings.sh"
		#!/bin/bash
		[ "\${XSESSION_EXEC}" = "xfce4-session" ] || exit
		export PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
		xfconf-query -c xfwm4 -p /general/use_compositing -t bool -s false
		EOF
          CHOWN_FILE root:root "/usr/local/bin/xfce-settings.sh"
          CHMOD_FILE 755 "/usr/local/bin/xfce-settings.sh"
          ;;
    esac

    # Cleanup
    case "${LSB_VENDOR}" in
      "Debian"|"Devuan"|"Ubuntu")
          APT_AUTOREMOVE
          ;;
    esac



    main_rc=0
    break

done


# Cleanup if error
if [ ${main_rc} -ne 0 -a ${main_rc} -ne 111 ] ; then
    ERROR "'${APP}': Installation failed."
    # Cleanup tasks here
    case "${LSB_VENDOR}" in
      "CentOS"|"CentOSStream8")
          YUM_GROUPREMOVE "Xfce"
          YUM_REMOVE "libxfce4ui"
          YUM_AUTOREMOVE
          ;;
      "Debian"|"Devuan")
          APT_REMOVE \
              "xfce4" \
              "xfce4-goodies"
          RM_FILES "/etc/apt/sources.list.d/mxrepo.list"
          APT_AUTOREMOVE
          APT_UPDATE
          ;;
      "Ubuntu")
          APT_REMOVE \
              "xubuntu-desktop" \
              "xfce4-goodies" \
              "numix-gtk-theme" \
              "numix-icon-theme-circle"
          DEL_APT_REPO "ppa:numix/ppa" && APT_UPDATE
          RM_FILES "${USERHOME}/.config/autostart/numix.desktop" \
                   "${USERHOME}/.config/autostart/xfce-settings.desktop"
          RM_DIRS  "${USERHOME}/.config/xfce4"
          APT_AUTOREMOVE
          APT_UPDATE
          ;;
    esac
fi



SCRIPTEXIT
