Files
linux-scripts/desktop-setup.sh

141 lines
4.6 KiB
Bash
Executable File

#!/bin/bash
# find distro
if command -v lsb_release &>/dev/null; then
DISTRO=$(lsb_release -si | tr '[:upper:]' '[:lower:]')
elif [[ -f /etc/os-release ]]; then
DISTRO=$(source /etc/os-release && echo $ID | tr '[:upper:]' '[:lower:]')
fi
#function name: check if whiptail is installed
#description: check if whiptail is installed, if not install it
#parameters: none
#return: none
function check_whiptail() {
if ! command -v whiptail &>/dev/null; then
if [[ $DISTRO =~ (debian|ubuntu) ]]; then
sudo apt install whiptail -y
elif [[ $DISTRO == "fedora" ]]; then
sudo dnf install newt -y
elif [[ $DISTRO == "arch" ]]; then
sudo pacman -S --needed newt --noconfirm
fi
fi
}
function setupDesktopEnvironment() {
DE=$(whiptail --title "Desktop Environment" --menu "Choose a desktop environment" 15 60 8 \
"1" "GNOME" \
"2" "KDE" \
"3" "XFCE" \
"4" "Cinnamon" \
"5" "MATE" \
"6" "Budgie" \
"7" "Sway" \
"8" "Hyprland" 3>&1 1>&2 2>&3)
case $DE in
1) installGNOME ;;
2) installKDE ;;
3) installXFCE ;;
4) installCinnamon ;;
5) installMATE ;;
6) installBudgie ;;
7) installSway ;;
8) installHyprland ;;
esac
}
function installGNOME() {
if [[ $DISTRO =~ (debian|ubuntu) ]]; then
sudo apt install gnome-shell task-gnome-desktop gnome-tweaks gnome-extensions gnome-software-plugin-flatpak -y
elif [[ $DISTRO == "fedora" ]]; then
sudo dnf group install gnome-desktop -y
sudo dnf in gnome-tweaks gnome-extensions -y
elif [[ $DISTRO == "arch" ]]; then
sudo pacman -S --needed gnome gnome-tweaks gnome-extensions gnome-packagekit --noconfirm
fi
}
function installKDE() {
if [[ $DISTRO =~ (debian|ubuntu) ]]; then
sudo apt install kde-standard kdeconnect plasma-discover-backend-flatpak -y
elif [[ $DISTRO == "fedora" ]]; then
sudo dnf group install kde-desktop -y
sudo dnf in kde-connect -y
elif [[ $DISTRO == "arch" ]]; then
sudo pacman -S --needed plasma-meta kdeconnect gwenview --noconfirm
fi
}
function installXFCE() {
if [[ $DISTRO =~ (debian|ubuntu) ]]; then
sudo apt install xfce4 xfce4-goodies -y
elif [[ $DISTRO == "fedora" ]]; then
sudo dnf in @xfce-desktop-environment -y
elif [[ $DISTRO == "arch" ]]; then
sudo pacman -S --needed xfce4 xfce4-goodies --noconfirm
fi
}
function installCinnamon() {
if [[ $DISTRO =~ (debian|ubuntu) ]]; then
sudo apt install task-cinnamon-desktop -y
elif [[ $DISTRO == "fedora" ]]; then
sudo dnf in @cinnamon-desktop-environment -y
elif [[ $DISTRO == "arch" ]]; then
sudo pacman -S --needed cinnamon --noconfirm
fi
}
function installMATE() {
if [[ $DISTRO =~ (debian|ubuntu) ]]; then
sudo apt install mate-desktop-environment -y
elif [[ $DISTRO == "fedora" ]]; then
sudo dnf in @mate-desktop-environment -y
elif [[ $DISTRO == "arch" ]]; then
sudo pacman -S --needed mate mate-extra --noconfirm
fi
}
function installBudgie() {
if [[ $DISTRO =~ (debian|ubuntu) ]]; then
sudo apt install --install-suggests budgie-desktop -y
elif [[ $DISTRO == "fedora" ]]; then
sudo dnf group install budgie-desktop budgie-desktop-apps -y
elif [[ $DISTRO == "arch" ]]; then
sudo pacman -S --needed budgie budgie-desktop --noconfirm
fi
}
function installSway() {
echo "Warning: Experimental Script."
if [[ $DISTRO =~ (debian|ubuntu) ]]; then
sudo apt install sway swaybg swayidle swaylock waybar xdg-desktop-portal-wlr xwayland -y
elif [[ $DISTRO == "fedora" ]]; then
sudo dnf in sway-desktop-environment sway swaybg swayidle swaylock waybar -y
elif [[ $DISTRO == "arch" ]]; then
sudo pacman -S --needed sway swaybg swayidle swaylock waybar --noconfirm
fi
}
function installHyprland() {
echo "Warning: Experimental Script."
if [[ $DISTRO =~ (debian|ubuntu) ]]; then
sudo apt install hyprland -y
elif [[ $DISTRO == "fedora" ]]; then
sudo dnf in hyprland -y
elif [[ $DISTRO == "arch" ]]; then
sudo pacman -S --needed hyprland --noconfirm
fi
}
echo -e "\e[1;31mWARNING: This script assumes a standard Debian/Fedora/Arch install.\e[0m"
read -r -p "Are you sure you want to continue? [N/y] " response
if [[ "$response" =~ ^[Yy]$ ]]; then
echo "Continuing..."
check_whiptail
setupDesktopEnvironment
else
echo "Script execution aborted."
exit 1
fi