
I have tested the script with 24.10 and 25.04 during the past weeks and improved some minor code for KDE Plasma 6.
#!/bin/bash ################################################################################ # # # # # $$ $$ $$ # # $$ $$ $$$$$$$$$ $$ $$ $$$$$$$ $$ # # $$ $$ $$ $$ $$ $$ $$ $$ # # $$$$$$$$$ $$$$$$$$ $$ $$ $$ $$ $$ # # $$ $$ $$ $$ $$ $$ $$ $$ # # $$ $$ $$ $$ $$ $$ $$ # # $$ $$ $$$$$$$$$ $$$$$$$$$ $$$$$$$$$ $$$$$$$ $$ # # # # # # This is a little helper script for Kubuntu™ (24.04 & later) users who want # # to install the traditional Thunderbird from Mozilla.org and use it # # complementary to or instead of the Thunderbird Snap. # # It can also remove Thunderbird, if it has been installed by this script # # before, and has been tested many times with Kubuntu™ 24.04 LTS up to 25.04. # # # # -> IMPORTANT: # # It is advised to run this script after a full upgrade of the system # # (either with Discover or in Konsole with "sudo apt update && sudo apt # # full-upgrade") AND a reboot. # # # # -> Thunderbird from Mozilla.org can simply be used alternatively with or # # without the Thunderbird Snap and no further actions are to be taken. # # It will remain installed when release-upgrading (e.g. from 24.10 to # # 25.04) and causes no conflicts during the upgrade process. # # This version of Thunderbird behaves roughly like the ones for macOS™ or # # Windows™ do and updates itself independently from Discover or APT package # # management (and can ask you before updating - if you would prefer being # # asked see the Thunderbird settings). # # # # You will be asked if you want [1] to download and install Thunderbird from # # Mozilla.org OR [2] to remove a previously installed Thunderbird, but if you # # choose [3] to cancel, no changes at all are made to your system. # # After you chose [1] to install Thunderbird from Mozilla.org, you will be # # asked to select your preferred language next. # # # # For some more information about what is done in detail see the comments # # within this script. # # # # My scripts are in no way associated with Canonical™, Ubuntu™ or Kubuntu™. # # This script comes with ABSOLUTELY NO WARRANTY OF ANY KIND. # # It may be used, shared, copied and modified freely. # # # # You can download my scripts from here: https://gitlab.com/scripts94 # # # # I hope you find the script useful! Yours respectfully, Schwarzer Kater # # # ################################################################################ versionnr="1.0.4" ######## ## During this session let's make sure no "exotic" or interfering aliases can be ## used in this script ######## shopt -u expand_aliases ######## ## Display purpose of this script ######## clear echo -e "########" echo -e "## This is a little helper script for Kubuntu™ (24.04 & later) users who want" echo -e "## to install the traditional Thunderbird from Mozilla.org and use it" echo -e "## complementary to or instead of the Thunderbird Snap." echo -e "## It can also remove Thunderbird, if it has been installed by this script" echo -e "## before, and has been tested many times with Kubuntu™ 24.04 LTS up to 25.04." echo -e "##" echo -e "## -> IMPORTANT:" echo -e "## It is advised to run this script after a full upgrade of the system" echo -e "## (either with Discover or in Konsole with \"sudo apt update && sudo apt" echo -e "## full-upgrade\") AND a reboot." echo -e "## -> Thunderbird from Mozilla.org can simply be used alternatively with or" echo -e "## without the Thunderbird Snap and no further actions are to be taken." echo -e "## It will remain installed when release-upgrading (e.g. from 24.10 to" echo -e "## 25.04) and causes no conflicts during the upgrade process." echo -e "## This version of Thunderbird behaves roughly like the ones for macOS™ or" echo -e "## Windows™ do and updates itself independently from Discover or APT package" echo -e "## management (and can ask you before updating - if you would prefer being" echo -e "## asked see the Thunderbird settings)." echo -e "##" echo -e "## You will be asked if you want [1] to download and install Thunderbird from" echo -e "## Mozilla.org OR [2] to remove a previously installed Thunderbird, but if you" echo -e "## choose [3] to cancel, no changes at all are made to your system." echo -e "## After you chose [1] to install Thunderbird from Mozilla.org, you will be" echo -e "## asked to select your preferred language next." echo -e "##" echo -e "## For some more information about what is done in detail see the comments" echo -e "## within the script itself." echo -e "##" echo -e "## This script comes with ABSOLUTELY NO WARRANTY OF ANY KIND." echo -e "## It may be used, shared, copied and modified freely." echo -e "##" echo -e "## I hope you find the script useful! Yours respectfully, Schwarzer Kater" echo -e "########\n" read -p "Press [Enter] to continue, press [Ctrl] [c] to exit. " ######## ## Make sure the computer has established an internet connection with IP and DNS ## before running the rest of the script ######## if ! ping -c1 -W1 ubuntu.com &> /dev/null && ! ping -c1 -W1 kde.org &> /dev/null && ! ping -c1 -W1 kernel.org &> /dev/null then echo -e "\n###############################################################################\n## -> AN ERROR OCCURED! <- ##\n## An Internet connection is required to run this script. ##\n## -> Please connect your Kubuntu™ to the Internet and run the script again! ##\n###############################################################################\n" exit 1 fi ######## ## Install or remove the traditional Thunderbird from Mozilla.org ######## intb=0 tberror=0 rmtb=0 # Test if the operating system is Kubuntu 24.04 or later / Ubuntu 24.04 or # later-based with KDE Plasma if ! cat /etc/os-release | grep -Ei "(^|\s)VERSION=(|\s|\"|\s\")(24.04|24.10|25.04)" &> /dev/null || ! echo "$XDG_CURRENT_DESKTOP" | grep -i KDE &> /dev/null then echo -e "\n######################################################################\n## This script is meant to be used with Kubuntu™ 24.04 LTS or later ##\n## -> PROCEED AT YOUR OWN RISK! ##\n######################################################################" fi echo -e "\n########\n## Do you want to:\n## [1] DOWNLOAD and INSTALL the latest stable Thunderbird from Mozilla.org?" echo -e "## or\n## [2] REMOVE Thunderbird from /opt if it has been installed by this script\n## before?" if test -d "$HOME/.thunderbird" ; then echo -e "## (Your user data e.g. in \".thunderbird\" within your $HOME" ; fi if test -d "$HOME/.thunderbird" ; then echo -e '## directory will NOT be touched!)' ; fi echo -e "## or\n## [3] CANCEL the download and installation?\n########" # Give option to cancel the installation while true do read -p "[1], [2] or [3] " choice if [[ "${choice}" = "1" ]] then # Test if traditional Thunderbird is installed conventionally/from a PPA # or to /opt if [[ -d "/usr/lib/thunderbird" && $(command -v thunderbird) ]] || test -x "/opt/thunderbird/thunderbird" then echo -e "\n########\n## Traditional Thunderbird seems to already be installed\n## -> not changing anything …\n########" break else # Choose from a list of languages and download latest stable # Thunderbird in the chosen language to $HOME - see: # https://ftp.mozilla.org/pub/thunderbird/releases/latest/README.txt echo PS3="$(printf '\nChoose your preferred language for Thunderbird: ')" select languagesel in "Albanian lang=sq" "Arabic lang=ar" "Armenian lang=hy-AM" "Asturian lang=ast" "Basque lang=eu" "Belarusian lang=be" "Bengali (Bangladesh) lang=bn-BD" "Breton lang=br" "Bulgarian lang=bg" "Catalan lang=ca" "Chinese (Simplified) lang=zh-CN" "Chinese (Traditional) lang=zh-TW" "Croatian lang=hr" "Czech lang=cs" "Danish lang=da" "Dutch lang=nl" "English (British) lang=en-GB" "English (US) lang=en-US" "Estonian lang=et" "Finnish lang=fi" "French lang=fr" "Frisian lang=fy-NL" "Gaelic (Scotland) lang=gd" "Galician lang=gl" "German lang=de" "Greek lang=el" "Hebrew lang=he" "Hungarian lang=hu" "Icelandic lang=is" "Indonesian lang=id" "Irish lang=ga-IE" "Italian lang=it" "Korean lang=ko" "Lithuanian lang=lt" "Lower Sorbian lang=dsb" "Norwegian (BokmÃ¥l) lang=nb-NO" "Norwegian (Nynorsk) lang=nn-NO" "Polish lang=pl" "Portuguese (Brazilian) lang=pt-BR" "Portuguese (Portugal) lang=pt-PT" "Punjabi (India) lang=pa-IN" "Romanian lang=ro" "Romansh lang=rm" "Russian lang=ru" "Serbian lang=sr" "Sinhala lang=si" "Slovak lang=sk" "Slovenian lang=sl" "Spanish (Argentina) lang=es-AR" "Spanish (Spain) lang=es-ES" "Swedish lang=sv-SE" "Tamil (Sri Lanka) lang=ta-LK" "Turkish lang=tr" "Ukrainian lang=uk" "Upper Sorbian lang=hsb" "Vietnamese lang=vi" "Welsh lang=cy" do if [[ $REPLY -ge 1 && $REPLY -le 57 ]] then languagename="$(echo "${languagesel}" | sed 's/ lang.*$//')" languagecode="$(echo "${languagesel}" | sed 's/^.* //')" echo -e "\n########\n## -> Downloading ${languagename} version of Thunderbird from Mozilla.org …\n########\n" && wget -O "$HOME/thunderbird-latest-stable.tar.xz" "https://download.mozilla.org/?product=thunderbird-latest&os=linux64&${languagecode}" # Test if archive was e.g. not available at all if [[ $? -ne 0 ]] then echo -e '\n################################################################################\n## -> AN ERROR OCCURED! <- ##' echo -e "## Thunderbird seems not to be available in the chosen language at the moment ##\n## -> not changing anything … ##\n################################################################################" tberror=1 break 2 fi break else echo -e "\n-> Please enter a valid number [1-57]!" fi done # Decompress the downloaded Thunderbird archive echo -e "########\n## -> Decompressing the Thunderbird archive …\n########\n" && tar xf "$HOME/thunderbird-latest-stable.tar.xz" -C "$HOME" # Test if archive was e.g. corrupt if [[ $? -ne 0 ]] then echo -e '\n##################################################\n## -> AN ERROR OCCURED! <- ##' echo -e "## This Thunderbird archive seems to be corrupt ##\n## -> not changing anything … ##\n##################################################" tberror=1 break fi # Install Thunderbird to /opt echo -e "########\n## -> Installing Thunderbird from Mozilla.org to /opt …\n########\n" && sudo mv "$HOME/thunderbird" /opt # Clean up: remove the dowloaded Thunderbid archive from $HOME if test -e "$HOME/thunderbird-latest-stable.tar.xz" ; then echo -e "\n########\n## -> Cleaning up …\n########\n" && rm -f "$HOME/thunderbird-latest-stable.tar.xz" ; fi # Make the new Thunderbird accessible from CLI (don't use /usr/bin - # otherwise the link could be removed when release-upgrading / # (re)installing the Thunderbird Snap) # Create /usr/local/bin before, if it doesn't exit sudo mkdir -p /usr/local/bin && sudo ln -s /opt/thunderbird/thunderbird /usr/local/bin/thunderbird # Create thunderbird.desktop in /usr/local/share/applications to give # all users access to the new Thunderbird via application menu (don't # use /usr/share/applications - otherwise the .desktop file could be # removed when release-upgrading / (re)installing the Thunderbird # Snap) echo -e "########\n## -> Writing thunderbird.desktop file to /usr/local/share/applications/ :\n########\n" # Create /usr/local/share/applications before, if it doesn't exit sudo mkdir -p /usr/local/share/applications echo -e "[Desktop Entry]\nEncoding=UTF-8\nName=Thunderbird Mail from Mozilla.org\nComment=Send and receive mail with Thunderbird\nGenericName=Mail Client\nKeywords=Email;E-mail;Newsgroup;Feed;RSS\nExec=/opt/thunderbird/thunderbird %u\nTerminal=false\nX-MultipleArgs=false\nType=Application\nIcon=/opt/thunderbird/chrome/icons/default/default128.png\nCategories=Application;Network;Email;\nMimeType=x-scheme-handler/mailto;application/x-xpinstall;x-scheme-handler/webcal;x-scheme-handler/mid;message/rfc822;\nStartupNotify=true\nActions=Compose;Contacts;\n\n[Desktop Action Compose]\nName=Compose New Message\nExec=/opt/thunderbird/thunderbird -compose\n\n[Desktop Action Contacts]\nName=Contacts\nExec=/opt/thunderbird/thunderbird -addressbook\n" | sudo tee /usr/local/share/applications/thunderbird.desktop # Rebuild the KDE Plasma application menu index as sometimes this # helps when the new Thunderbird does not show properly (especially # if the Thunderbird Snap is additionally installed) if command -v kbuildsycoca6 &> /dev/null then kbuildsycoca6 &> /dev/null elif command -v kbuildsycoca5 &> /dev/null then kbuildsycoca5 &> /dev/null fi intb=1 break fi elif [[ "${choice}" = "2" ]] then # Test if traditional Thunderbird has been installed to /opt by this # script if ! [[ -x "/opt/thunderbird/thunderbird" && -r "/usr/local/share/applications/thunderbird.desktop" ]] then echo -e "\n########\n## Traditional Thunderbird does not seem to have been installed from Mozilla.org\n## to /opt by this script before -> not changing anything …\n########" break else # Give option to cancel echo -e "\n########\n## Are you sure you want to UNINSTALL traditional Thunderbird from /opt ?\n########" while true do read -p "[y/n] " removetb if [[ "${removetb}" = [Yy] ]] then # Remove Thunderbird from /opt, the link from /usr/local/bin # and the .desktop file from /usr/local/share/applications echo -e "\n########\n## -> Removing traditional Thunderbird from /opt …\n########\n" sudo rm -rf /opt/thunderbird && sudo rm -f /usr/local/bin/thunderbird && sudo rm -f /usr/local/share/applications/thunderbird.desktop # Rebuild the KDE Plasma application menu index if command -v kbuildsycoca6 &> /dev/null then kbuildsycoca6 &> /dev/null elif command -v kbuildsycoca5 &> /dev/null then kbuildsycoca5 &> /dev/null fi rmtb=1 break 2 elif [[ "${removetb}" = [Nn] ]] then echo -e "\n########\n## You have canceled the removal of traditional Thunderbird from /opt\n## -> not changing anything …\n########" break 2 fi done fi elif [[ "${choice}" = "3" ]] then echo -e "\n########\n## You have canceled the download & installation or removal of the traditional\n## Thunderbird -> not changing anything …\n########" break fi done ######## ## Report what has been done ######## summary_first="\n########\n## -> SUMMARY:" summary_what="## Thunderbird has been successfully installed from Mozilla.org to /opt ." summary_where="## -> You can find it in your application menu under \"Internet\"." summary_snap="## -> Be aware that the Thunderbird Snap is still additionally installed.\n## DON'T START AND USE BOTH the traditional Thunderbird AND the Thunderbird\n## Snap SIMULTANEOUSLY - this can lead to problems!" summary_snapremove="## You can remove and block Snaps entirely with the \"get_rid_of_Snap\" script." summary_nochange="## The script has made no changes at all to your system!" summary_last="## Have a nice day and enjoy Kubuntu™.\n########\n" summary_lasttb="## Have a nice day and enjoy your new Thunderbird and Kubuntu™.\n########\n" savesummary=0 if [[ ${intb} = 1 ]] then # Tell that Thunderbird has been installed from Mozilla.org echo -e "${summary_first}" echo -e "${summary_what}" echo -e "${summary_where}" if snap list thunderbird &> /dev/null ; then echo -e "${summary_snap}" ; fi if snap list thunderbird &> /dev/null ; then echo -e "${summary_snapremove}" ; fi echo -e "${summary_lasttb}" savesummary=1 elif [[ ${rmtb} = 1 ]] then # Tell that Thunderbird has been removed from /opt echo -e "${summary_first}" echo -e "## Thunderbird has been successfully removed from /opt ." if test -d "$HOME/.thunderbird" ; then echo -e "## -> Your user data in \".thunderbird\" within your $HOME" ; fi if test -d "$HOME/.thunderbird" ; then echo -e '## directory has NOT been touched!' ; fi echo -e "${summary_last}" savesummary=1 elif [[ ${intb} = 0 ]] && [[ ${tberror} = 1 ]] then # Tell that an error has occured and nothing has been changed echo -e "${summary_first}" echo -e '## Thunderbird could NOT be installed from Mozilla.org to /opt !' echo -e "## It was either not available in your chosen language at the moment or this\n## archive was corrupt…" echo -e "## -> Please run the script again and choose a more \"common\" (but nonetheless\n## fitting) language version instead." echo -e "## After the installation you can change to your preferred language in the\n## Thunderbird settings." echo -e "${summary_nochange}" echo -e "${summary_last}" else # Tell that nothing has changed echo -e "${summary_first}" echo -e "${summary_nochange}" echo -e "${summary_last}" fi ######## ## Give option to save the summary, if the script has changed anything ######## appendix="$(date +"%Y-%m-%d_%H:%M")" if [[ ${savesummary} = 1 ]] then echo -e "########\n## -> Do you want to save this summary for future reference?\n########" while true do read -p "[y/n] " wantsave if [[ "${wantsave}" = [Yy] ]] && [[ ${intb} = 1 ]] then # Save to text file that Thunderbird has been installed from # Mozilla.org echo -e "${summary_first}" > "$HOME/install_traditional_Thunderbird-SUMMARY_${appendix}.txt" echo -e "${summary_what}" >> "$HOME/install_traditional_Thunderbird-SUMMARY_${appendix}.txt" echo -e "${summary_where}" >> "$HOME/install_traditional_Thunderbird-SUMMARY_${appendix}.txt" if snap list thunderbird &> /dev/null ; then echo -e "${summary_snap}" >> "$HOME/install_traditional_Thunderbird-SUMMARY_${appendix}.txt" ; fi if snap list thunderbird &> /dev/null ; then echo -e "${summary_snapremove}" >> "$HOME/install_traditional_Thunderbird-SUMMARY_${appendix}.txt" ; fi echo -e "${summary_lasttb}" >> "$HOME/install_traditional_Thunderbird-SUMMARY_${appendix}.txt" echo -e "Script version used: ${versionnr}" >> "$HOME/install_traditional_Thunderbird-SUMMARY_${appendix}.txt" echo -e "\n########\n## -> The summary of what has been done by this script was saved to:\n## $HOME/install_traditional_Thunderbird-SUMMARY_${appendix}\n########\n" break elif [[ "${wantsave}" = [Yy] ]] && [[ ${rmtb} = 1 ]] then # Save to text file that Thunderbird has been removed from /opt echo -e "${summary_first}" > "$HOME/install_traditional_Thunderbird-SUMMARY_${appendix}.txt" echo -e "## Thunderbird has been successfully removed from /opt ." >> "$HOME/install_traditional_Thunderbird-SUMMARY_${appendix}.txt" if test -d "$HOME/.thunderbird" ; then echo -e "## -> Your user data in \".thunderbird\" within your $HOME" >> "$HOME/install_traditional_Thunderbird-SUMMARY_${appendix}.txt" ; fi if test -d "$HOME/.thunderbird" ; then echo -e '## directory has NOT been touched!' >> "$HOME/install_traditional_Thunderbird-SUMMARY_${appendix}.txt" ; fi echo -e "${summary_last}" >> "$HOME/install_traditional_Thunderbird-SUMMARY_${appendix}.txt" echo -e "Script version used: ${versionnr}" >> "$HOME/install_traditional_Thunderbird-SUMMARY_${appendix}.txt" echo -e "\n########\n## -> The summary of what has been done by this script was saved to:\n## $HOME/install_traditional_Thunderbird-SUMMARY_${appendix}\n########\n" break elif [[ "${wantsave}" = [Nn] ]] then echo break fi done fi
Leave a comment: