141 lines
4.6 KiB
Bash
Executable File
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 |