From 28bb42897650881c1cfc3c4c39292d4146a1c97a Mon Sep 17 00:00:00 2001 From: TrudeEH Date: Wed, 7 Aug 2024 16:03:01 +0100 Subject: [PATCH] Finish transition to zenity --- install.sh | 214 +++++++++++++++++++++++++++-------------------------- 1 file changed, 110 insertions(+), 104 deletions(-) diff --git a/install.sh b/install.sh index b0e6ffe7..df054d7b 100755 --- a/install.sh +++ b/install.sh @@ -1,24 +1,40 @@ #! /bin/bash +# Sudo auth +auth() { + echo "$sudopass" | sudo -S -k $* +} +export HISTIGNORE='*sudo -S*' +for (( ; ; )); do + sudopass=$(zenity --password) + if [ -z "${sudopass}" ]; then + exit + fi + auth echo "Test sudo password." + if [[ $? == 0 ]]; then + break + fi +done + if ! command -v zenity; then - sudo apt-get install zenity -y + auth apt-get install zenity -y fi # Update System ( -sudo apt-get update +auth apt-get update echo "20" echo "# Updating distro packages..." -sudo apt-get dist-upgrade -y +auth apt-get dist-upgrade -y echo "40" echo "# Updating installed packages..." -sudo apt-get upgrade -y +auth apt-get upgrade -y echo "60" echo "# Cleaning cache..." -sudo apt-get clean +auth apt-get clean echo "80" echo "# Removing unused dependencies..." -sudo apt-get autoremove -y +auth apt-get autoremove -y echo "100" ) | zenity --progress --title="Update System" --text="Updating repositories..." --percentage=0 --no-cancel @@ -30,7 +46,7 @@ zenity --question \ if [[ $? == 0 ]]; then ( - sudo apt-get install -y htop fzf git wget curl bash-completion + auth apt-get install -y htop fzf git wget curl bash-completion echo "20" echo "# Copying dotfiles..." cp -vrf config-files/.* $HOME @@ -54,13 +70,13 @@ zenity --question \ if [[ $? == 0 ]]; then ( - sudo apt install -y flatpak + auth apt-get install -y flatpak echo "30" echo "# Install the gnome-software plugin..." - sudo apt install -y gnome-software-plugin-flatpak + auth apt-get install -y gnome-software-plugin-flatpak echo "50" echo "# Add Flathub..." - sudo flatpak remote-add --if-not-exists flathub https://dl.flathub.org/repo/flathub.flatpakrepo + auth flatpak remote-add --if-not-exists flathub https://dl.flathub.org/repo/flathub.flatpakrepo echo "75" echo "# Installing Adw GTK3 theme for flatpak apps..." flatpak install org.gtk.Gtk3theme.adw-gtk3 org.gtk.Gtk3theme.adw-gtk3-dark @@ -69,16 +85,16 @@ if [[ $? == 0 ]]; then zenity --progress --title="Enabling Flatpak" --text="Installing Flatpak..." --percentage=0 --no-cancel fi -# Apps +# Debian Apps options=( FALSE "Install Neovim" FALSE "Install Zed" FALSE "Install Ollama" FALSE "Install GitHub CLI" - FALSE "Install Tailscale (VPN)" - FALSE "Install Syncthing" + FALSE "Install Tailscale" + FALSE "Install Firefox + Adw theme" ) -checkbox=$(zenity --list --checklist \ +checkbox=$(zenity --list --checklist --height=500\ --title="Install Apps" \ --column="Select" \ --column="Tasks" "${options[@]}") @@ -87,7 +103,7 @@ readarray -td '|' choices < <(printf '%s' "$checkbox") for selection in "${choices[@]}"; do if [ "$selection" = "Install Neovim" ]; then ( - sudo apt install -y ninja-build gettext cmake unzip curl build-essential + auth apt install -y ninja-build gettext cmake unzip curl build-essential echo "30" git clone https://github.com/neovim/neovim --depth 1 echo "50" @@ -96,7 +112,7 @@ for selection in "${choices[@]}"; do echo "60" make CMAKE_BUILD_TYPE=RelWithDebInfo echo "80" - sudo make install + auth make install cd .. rm -rf neovim echo "100" @@ -124,99 +140,89 @@ for selection in "${choices[@]}"; do fi fi - # ------ TODO --------- - - if [ "$selection" = "########" ]; then - # Firefox Theme - dialog --erase-on-exit \ - --backtitle "$BACKTITLE" \ - --title "Install the Adwaita Firefox theme?" \ - --yesno "OPEN FIREFOX BEFORE INSTALLING! The theme mimics GNOME Web and will be installed using the script provided by the theme on GitHub." 10 40 - - if [ "$?" -eq 0 ]; then - curl -s -o- https://raw.githubusercontent.com/rafaelmardojai/firefox-gnome-theme/master/scripts/install-by-curl.sh | bash - fi - fi - if [ "$selection" = "Install GitHub CLI" ]; then - clear - echo "----------------------" - echo "--- Install GH CLI ---" - echo "----------------------" - echo - echo - - sudo apt install wget -y - sudo mkdir -p -m 755 /etc/apt/keyrings - sudo rm -f /etc/apt/sources.list.d/github-cli.list - wget -qO- https://cli.github.com/packages/githubcli-archive-keyring.gpg | sudo tee /etc/apt/keyrings/githubcli-archive-keyring.gpg - sudo chmod go+r /etc/apt/keyrings/githubcli-archive-keyring.gpg - echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/githubcli-archive-keyring.gpg] https://cli.github.com/packages stable main" | sudo tee /etc/apt/sources.list.d/github-cli.list - sudo apt update - sudo apt install gh -y + ( + auth apt-get install wget -y + echo "20" + auth mkdir -p -m 755 /etc/apt/keyrings + auth rm -f /etc/apt/sources.list.d/github-cli.list + wget -qO- https://cli.github.com/packages/githubcli-archive-keyring.gpg | auth tee /etc/apt/keyrings/githubcli-archive-keyring.gpg + echo "40" + auth chmod go+r /etc/apt/keyrings/githubcli-archive-keyring.gpg + echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/githubcli-archive-keyring.gpg] https://cli.github.com/packages stable main" | auth tee /etc/apt/sources.list.d/github-cli.list + auth apt-get update + echo "60" + auth apt-get install gh -y + echo "100" + ) | + zenity --progress --title="GitHub CLI" --text="Installing GitHub CLI..." --percentage=0 --no-cancel fi - if [ "$selection" = "Install Apps (Enables Flatpak)" ]; then - clear - echo "----------------------------" - echo "--- Install Applications ---" - echo "----------------------------" - echo - echo - - - - dialog --erase-on-exit \ - --backtitle "$BACKTITLE" \ - --checklist "Select Apps to install." 30 90 5 \ - "io.github.mrvladus.List" "Errands (Tasks)" "on"\ - "io.gitlab.news_flash.NewsFlash" "Newsflash (RSS)" "on"\ - "org.gnome.gitlab.somas.Apostrophe" "Apostrophe (Markdown Editor)" "on"\ - "org.gnome.World.Secrets" "Secrets (Password manager)" "on"\ - "org.gnome.Polari" "Polari (IRC)" "off" \ - "org.gnome.Fractal" "Fractal (Matrix)" "on"\ - "so.libdb.dissent" "Dissent (Discord)" "on"\ - "io.gitlab.adhami3310.Impression" "Impression (Disk image creator)" "on"\ - "org.gnome.Builder" "Builder (IDE)" "on"\ - "org.gnome.design.AppIconPreview" "App Icon Preview" "on"\ - "org.gnome.design.IconLibrary" "Icon Library" "on"\ - "org.gnome.design.Palette" "Color Palette" "on"\ - "org.gnome.design.SymbolicPreview" "Symbolic Preview" "on"\ - "org.gnome.design.Typography" "Typography" "on"\ - "re.sonny.Workbench" "Workbench" "on"\ - "org.prismlauncher.PrismLauncher" "Prism Launcher" "off" 2> choice.tmp - app_menu=$( cat choice.tmp ) - rm choice.tmp - - for app in $app_menu; do - echo "Installing $app..." - flatpak install -y flathub $app - done - fi - - if [ "$selection" = "Install Tailscale (VPN)" ]; then - clear - echo "-------------------------" - echo "--- Install Tailscale ---" - echo "-------------------------" - echo - echo - + if [ "$selection" = "Install Tailscale" ]; then + ( curl -fsSL https://tailscale.com/install.sh | sh - sudo tailscale up + echo "80" + auth tailscale up + echo "100" + ) | + zenity --progress --title="Tailscale" --text="Installing Tailscale..." --percentage=0 --no-cancel fi - if [ "$selection" = "Install Syncthing" ]; then - clear - echo "-------------------------" - echo "--- Install Syncthing ---" - echo "-------------------------" - echo - echo - - sudo apt install syncthing - systemctl --user enable syncthing.service - systemctl --user start syncthing.service - xdg-open "http://127.0.0.1:8384/" & + if [ "$selection" = "Install Firefox + Adw theme" ]; then + ( + auth apt install -y firefox-esr + echo "60" + firefox & + sleep 5 + echo "80" + echo "# Applying Adw theme..." + curl -s -o- https://raw.githubusercontent.com/rafaelmardojai/firefox-gnome-theme/master/scripts/install-by-curl.sh | bash + echo "100" + ) | + zenity --progress --title="Firefox" --text="Installing Firefox..." --percentage=0 --no-cancel fi done + +# Flatpak Apps +if command -v flatpak; then + options=( + FALSE "io.github.mrvladus.List" "Errands (Tasks)" + FALSE "io.gitlab.news_flash.NewsFlash" "Newsflash (RSS)" + FALSE "org.gnome.gitlab.somas.Apostrophe" "Apostrophe (Markdown Editor)" + FALSE "org.gnome.World.Secrets" "Secrets (Password manager)" + FALSE "org.gnome.Polari" "Polari (IRC)" + FALSE "org.gnome.Fractal" "Fractal (Matrix)" + FALSE "so.libdb.dissent" "Dissent (Discord)" + FALSE "io.gitlab.adhami3310.Impression" "Impression (Disk image creator)" + FALSE "org.gnome.Builder" "Builder (IDE)" + FALSE "org.gnome.design.AppIconPreview" "App Icon Preview" + FALSE "org.gnome.design.IconLibrary" "Icon Library" + FALSE "org.gnome.design.Palette" "Color Palette" + FALSE "org.gnome.design.SymbolicPreview" "Symbolic Preview" + FALSE "org.gnome.design.Typography" "Typography" + FALSE "re.sonny.Workbench" "Workbench" + FALSE "org.prismlauncher.PrismLauncher" "Prism Launcher" + FALSE "md.obsidian.Obsidian" "Obsidian" + ) + checkbox=$(zenity --list --checklist --width=800 --height=600 \ + --title="Install Apps" \ + --column="Select" \ + --column="App ID"\ + --column="App Name" "${options[@]}") + readarray -td '|' choices < <(printf '%s' "$checkbox") + + declare -i app_counter=0 + declare -i app_total="${#choices[@]}" + + for app in "${choices[@]}"; do + app_counter+=1 + echo "Installing $app ($app_counter/$app_total)..." + zenity --notification --icon="info" --text="Installing $app ($app_counter/$app_total)..." + flatpak install -y flathub $app + if [[ $? == 0 ]]; then + zenity --notification --icon="info" --text="$app is now installed." + else + zenity --notification --icon="error" --text="$app failed to install." + fi + done +fi