140 lines
4.8 KiB
Bash
Executable File
140 lines
4.8 KiB
Bash
Executable File
#!/bin/bash
|
|
# ---------------------------------------------------------------------
|
|
# Written for CrunchBang Linux <http://crunchbang.org/>
|
|
# by Philip Newborough (aka corenominal) <corenominal@corenominal.org>
|
|
# Ported to #!++ <https://crunchbangplusplus.org>
|
|
# by Ben Young <computermouth@crunchbangplusplus.org>
|
|
# Ported to Manjaro <https://manjaro.github.io/>
|
|
# by Daniel Napora <napcok@gmail.com>
|
|
# ---------------------------------------------------------------------
|
|
|
|
|
|
# In order to add another browser, simply add it to this array:
|
|
TOOLS=('chromium' 'google-chrome-stable' 'opera')
|
|
# If the package needs additional configuration before installation simply create a function called setupBrowserName, it will be called automatically.
|
|
|
|
KEY_URLS_GOOGLE=('https://dl-ssl.google.com/linux/linux_signing_key.pub' 'http://packages.crunchbangplusplus.org/chrome.pub')
|
|
KEY_URLS_OPERA=('http://deb.opera.com/archive.key' 'http://packages.crunchbangplusplus.org/opera.key')
|
|
|
|
if ! . mabox-include.cfg 2> /dev/null; then
|
|
say 'Failed to locate mabox-include.cfg in PATH' >&2
|
|
exit 1
|
|
fi
|
|
|
|
browserExists() {
|
|
for curTool in "${TOOLS[@]}"; do # if $packageName exists in tools array
|
|
[[ $curTool = "$1" ]] &&
|
|
return 0
|
|
done
|
|
say "Unable to install $1. There is no such browser that I know of." >&2
|
|
say "You can try one of these: ${TOOLS[@]}" >&2
|
|
return 1
|
|
}
|
|
|
|
addAptKey() {
|
|
clear
|
|
say 'Adding APT key...'
|
|
keyFile=$(mktemp -u)
|
|
for curKey; do
|
|
wget -O "$keyFile" "$curKey" 2> /dev/null && break; # success. No need to try other keys
|
|
say "Failed to retrieve key from $curKey . Trying another source..."
|
|
done
|
|
if [[ $? != 0 ]]; then
|
|
say 'Failed to retrieve APT key!' >&2
|
|
return 1
|
|
fi
|
|
sudo apt-key add "$keyFile"
|
|
rm -f "$keyFile"
|
|
return 0
|
|
}
|
|
|
|
setupGoogleChromeStable() {
|
|
addAptKey "${KEY_URLS_GOOGLE[@]}" || return 1
|
|
say 'Creating APT sources file...' 1
|
|
echo 'deb http://dl.google.com/linux/chrome/deb/ stable main' | sudo tee '/etc/apt/sources.list.d/google-chrome.list'
|
|
}
|
|
|
|
setupOpera() {
|
|
addAptKey "${KEY_URLS_OPERA[@]}" || return 1
|
|
say 'Creating APT sources file...' 1
|
|
echo 'deb http://deb.opera.com/opera/ stable non-free' | sudo tee '/etc/apt/sources.list.d/opera.list'
|
|
}
|
|
|
|
if [[ $1 && ! $1 =~ --install-* ]]; then
|
|
browserName=${1#--}
|
|
browserExists "$browserName" || exit 1
|
|
read -ra words <<< "${browserName//-/ }"
|
|
terminator --title="Install ${words[*]^}" --command="mabox-x-www-browser-pipemenu --install-$browserName"
|
|
|
|
elif [[ $1 = --install-* ]]; then
|
|
packageName=${1#--install-}
|
|
browserExists "$packageName" || exit 1
|
|
browserName=${packageName//-/ }
|
|
read -ra words <<< "$browserName"
|
|
browserName=${words[*]^}
|
|
browserNameUpper=${browserName^^}
|
|
|
|
while true; do # do it until the package is successfully installed or user wants to exit
|
|
if [[ $TRYAGAIN ]]; then # previous try failed
|
|
say
|
|
say "There was a problem installing $browserName."
|
|
say
|
|
prompt ' Hit any key to try again, or "q" to quit...' Q && break
|
|
fi
|
|
TRYAGAIN=true
|
|
|
|
clear
|
|
say
|
|
say "INSTALL ${browserNameUpper% BROWSER} BROWSER"
|
|
say '------------------------'
|
|
say "This script will install $browserName."
|
|
say
|
|
prompt ' Run the installer now?' || break
|
|
|
|
clear
|
|
connectiontest 1 || continue
|
|
|
|
setupFunctionName="setup${browserName//[^a-zA-Z]/}" # setupFunctionName should now be in format like 'setupChromiumBrowser'
|
|
if [[ $(type -t "$setupFunctionName") == 'function' ]]; then
|
|
"$setupFunctionName" || continue # run setup function if it exists
|
|
fi
|
|
|
|
clear
|
|
say 'Updating sources...' 1
|
|
sudo apt-get update
|
|
|
|
clear
|
|
say 'Installing package...' 1
|
|
sudo apt-get install -y "$packageName" || continue
|
|
|
|
clear
|
|
say
|
|
say "$browserName has been installed successfully."
|
|
say
|
|
say 'Hit any key to exit...'
|
|
read -srn1
|
|
break
|
|
done
|
|
else # pipemenu
|
|
menuStart
|
|
for curTool in "${TOOLS[@]}"; do
|
|
read -ra words <<< "${curTool//-/ }"
|
|
curToolName=${words[*]^}
|
|
if type "$curTool" &> /dev/null; then
|
|
INSTALLED=true
|
|
menuItem "$curToolName" "$curTool"
|
|
[[ $curToolName =~ 'Chrom' ]] &&
|
|
menuItem "$curToolName (Private Mode)" "$curTool --incognito" # Incognito mode for chrome and chromium
|
|
else
|
|
menuItem "Install $curToolName" "mabox-x-www-browser-pipemenu --$curTool"
|
|
fi
|
|
done
|
|
|
|
if [[ $INSTALLED ]]; then
|
|
menuSeparator
|
|
menuItem 'Select default browser' 'terminator --command="sudo update-alternatives --config x-www-browser"'
|
|
fi
|
|
menuEnd
|
|
fi
|
|
exit 0
|