#!/bin/bash
# - bof - #



clear;
hostName_=$(echo $(uname -n));
logF_=~/.noInstalled-Arch_Xfce-Desktop-Install_$(date +%Y-%m-%d_%H-%M-%S).log;



<<'comment'



sh -c "$(curl -fsSL https://www.education.isdevelopment.us/Arch.Ins/03-Arch_Xfce-Desktop-Install.sh)"



# :A
# -  - #
# - Arch Xfce desktop installation script - #

# - Method   # 1 - #
sh -c "$(curl -fsSL https://www.education.isdevelopment.us/Arch.Ins/03-Arch_Xfce-Desktop-Install.sh)"

# - Method   # 2 - #
xdI_=Arch_Xfce-Desktop-Install.sh;
curl -o ~/$xdI_ https://www.education.isdevelopment.us/Arch.Ins/03-$xdI_;
vim ~/$xdI_;
chmod +x ~/$xdI_; ~/./$xdI_;

# - Method   # 3 - #
cd ~/; rm -rf ~/Arch_Xfce-Desktop-Install.sh; nvim ~/Arch_Xfce-Desktop-Install.sh;
Copy & paste all this content
chmod +x ~/Arch_Xfce-Desktop-Install.sh; ~/./Arch_Xfce-Desktop-Install.sh;



# - Configured - #

# -  - #
# - Vim commands - #
https://vim.rtorr.com/

rm -rf ~/.bashrc;
nvim ~/.bashrc;

rm -rf ~/.zshrc;
nvim ~/.zshrc;

ssh-keygen -R 192.168.1.1

# - On client - #
cd ~/.ssh;
ssh-keygen -t rsa;

cat ~/.ssh/id_rsa.pub;

# - On server - #
nvim ~/.ssh/authorized_keys;

sudo apt install curl git htop inxi net-tools ntp neovim screenfetch tree -y;
sudo pacman -S curl git htop inxi net-tools ntp neovim screenfetch tree --noconfirm --needed;
comment



# -  - #
# - Log_ - #
function Log_(){
  gsS1_="Arch_Xfce-Desktop-Install\nPrograms not installed:";

  if [ -f "$logF_" ]; then
    rm -rf $logF_; fi;
  
  echo -e "$gsS1_\n" > $logF_;
  echo -e "Creating the log file... check for errors...\n";
  echo -e "5 seconds pause...\n\n\n";
  sleep 5;
}



# -  - #
# - Greetings_ - #
function Greetings_(){
  echo "";
  echo "by Djalmar Enrique Rayo (2025) - GNU General Public License (GPL)";
  echo "---------------------------------------------------------------------------";
  echo "";
  echo "  Warning: This script is going to install the Xfce-Desktop environment"
  echo "";
  echo "Important: This procedure will take a few minutes.";
  echo "";
  echo "Procedure: Open terminal & paste next command:";
  echo "";
  echo '           sh -c "$(curl -fsSL https://www.education.isdevelopment.us/Arch.Ins/03-Arch_Xfce-Desktop-Install.sh)"'
  echo -e "\n\n\n";

  while true; do
    read -p "Do you want to start the installation now? (Yy/Nn): " yn
    case $yn in
        [Yy]* )
          echo "Installation starting..."
          break;;
        [Nn]* )
          rm -rf ~/Arch_Xfce-Desktop-Install.sh;
          exit;
          break;;
        * ) echo "Please answer (y)es or (n)o.";;
    esac
done
}



# -  - #
# - Header_ - #
function Header_(){
  clear;
  echo "";
  figlet -f small "Xfce Desktop" | lolcat;
  figlet -f small "Environment" | lolcat;
}



# -  - #
# - update_ - #
function update_(){
  echo -e '\nUpdating system...';
  sudo pacman -Syu --noconfirm && sudo pacman -Syyuu --noconfirm;
  echo -e "\nSystem was updated...\n\n";
  sleep 10;
}



# -  - #
# - xorg_ - #
function xorg_(){
  echo -e "\nInstalling xOrg server...";

  lPrograms1_="xorg xorg-server xorg-xinit";
  tInstall_=$(sPackages_ "$lPrograms1_");
  sudo pacman -S $tInstall_ --noconfirm --needed;

  echo -e "\nxOrg server was installed successfully...\n\n";
  sleep 10;
}



# -  - #
# - lightdm_ - #
function lightdm_(){
  local sS1_='lightdm' sS2_='';

  # -  - #
  # - lightdm (Budgie, Cinnamon, Deepin, Mate, OpenBox, Xfce & XMonad) - #

  sS2_=$( echo $(pacman -Qqe | grep "$sS1_" ) | awk '{print $1;}');
  if [ "$sS1_" == "$sS2_" ]; then echo "lightdm already installed..."; sleep 5; return; fi;

  echo -e "\nInstalling lightdm desktop manager...";

<<'comment'
  light-locker
comment

  lPrograms1_="lightdm lightdm-gtk-greeter lightdm-gtk-greeter-settings accountsservice";
  tInstall_=$(sPackages_ "$lPrograms1_");
  sudo pacman -S $tInstall_ --noconfirm --needed;

  sudo systemctl enable lightdm;
  echo -e "\nLightDM login manager was installed...\n\n";
  sleep 10;
}



# -  - #
# - xfceDesktop_ - #
function xfceDesktop_(){
  echo -e "\nInstalling Xfce Desktop...";

  lPrograms1_="xfce4 xfce4-terminal";
  tInstall_=$(sPackages_ "$lPrograms1_");
  sudo pacman -S $tInstall_ --noconfirm --needed;
  sudo pacman -S xfce4-goodies --noconfirm --needed;

  echo -e "\nXfce Desktop was installed successfully...\n\n";
  sleep 10;
}



# -  - #
# - sPackages_ - #
function sPackages_(){
  local sS1_='' sS2_='' sS3_='' sS4_='' 
        lPacks_=$1 ;
  
  while true;
  do
    sS1_=$(echo "$lPacks_" | awk '{print $1}');
    lPacks_=$(echo "${lPacks_/$sS1_/"$sS2_"}");

    sS4_=$(echo $(pacman -Ssq | grep -oF "$sS1_" ) | awk '{print $1;}' );
    if [ "$sS4_" != "" ]; then
      sS3_=$sS3_" "$sS1_;
    else
      echo -e "$sS1_" >> $logF_;
    fi;
    sS1_='';

    lPacks_=$(echo "$lPacks_" | xargs);
    if [[ "$lPacks_" == "" ]]; then
      break; fi;
  done

  echo $sS3_;
}



# -  - #
# - checkComputer_ - #
function checkComputer_(){
  local sMsg_="This process cannot be executed on: $hostName_...";
  echo -e '\nChecking computer...\n';
  if [ "$hostName_" == "HPLaptopArch" ] || [ "$hostName_" == "HPDesktopArch" ]; then
     rm -rf ~/Arch_Xfce-Desktop-Install.sh;
     echo -e "\n$sMsg_\n\n\n";
     sleep 10;
     exit;
  fi;
  echo "";
}



Header_;
Greetings_;
checkComputer_;
Log_;
update_;
xorg_;
lightdm_;
xfceDesktop_;
rm -rf ~/Arch_Xfce-Desktop-Install.sh;



echo -e "\n\nThe system will reboot in 10 seconds...\n";
sleep 10;



sudo reboot now;



<<'comment'
# -  - #
# - Uninstall lisghtdm & xfce4 - #
sudo pacman -Rns lightdm lightdm-gtk-greeter lightdm-gtk-greeter-settings --noconfirm;
sudo pacman -Rns xfce4 xfce4-goodies xfce4-terminal --noconfirm;

cd ~/; rm -rf ~/Arch_Xfce-Desktop-Install.sh; nvim ~/Arch_Xfce-Desktop-Install.sh;
Copy & paste all this content
chmod +x ~/Arch_Xfce-Desktop-Install.sh; ~/./Arch_Xfce-Desktop-Install.sh;
comment



# - eof - #