Last active
June 10, 2020 14:00
-
-
Save sdumetz/f0d73f6bd8c7c2f0cb8065fb81b96c72 to your computer and use it in GitHub Desktop.
Install firefox official stable release on debian stretch and consorts
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/sh | |
#Install firefox official stable release on debian stretch and consorts | |
set -e | |
TMP="$(mktemp -d)" | |
install_base="/usr/local" | |
echo "downloading latest firefox release..." | |
wget -O "$TMP/FirefoxSetup.tar.bz2" "https://download.mozilla.org/?product=firefox-latest-ssl&os=linux64&lang=fr" | |
echo "removing old firefox binaries" | |
test -d "$install_base/lib/firefox" && rm -rf "$install_base/lib/firefox" | |
echo "extracting..." | |
tar -C "$install_base/lib" -xjf "$TMP/FirefoxSetup.tar.bz2" | |
rm -rf "$TMP" | |
echo "Creating executable..." | |
ln -f -s "$install_base/lib/firefox/firefox-bin" "$install_base/bin/firefox" | |
echo "Installing desktop entry..." | |
mkdir -p "$install_base/share/applications" | |
cat > "$install_base/share/applications/firefox.desktop" << EOF | |
[Desktop Entry] | |
Name=Firefox | |
Comment=Browse the World Wide Web | |
GenericName=Web Browser | |
X-GNOME-FullName=Firefox Upstream Browser | |
Exec=/usr/local/lib/firefox/firefox-bin %u | |
Terminal=false | |
X-MultipleArgs=false | |
Type=Application | |
Icon=firefox | |
Categories=Network;WebBrowser; | |
MimeType=text/html;text/xml;application/xhtml+xml;application/xml;application/vnd.mozilla.xul+xml;application/rss+xml;application/rdf+xml;image/gif;image/jpeg;image/png;x-scheme-handler/http;x-scheme-handler/https; | |
StartupWMClass=Firefox | |
StartupNotify=true | |
EOF | |
echo "Installing icons" | |
#some dirs might not exist | |
icons_base="$install_base/share/icons/hicolor" | |
#usage : link_icon <src> <size> | |
copy_icon(){ | |
local src="$1" | |
local size="$2" | |
local destdir="$icons_base/${size}x${size}/apps" | |
test -d "$destdir" || mkdir -p "$destdir" | |
echo "\tcopying $destdir/firefox.png" | |
test -f "$destdir/firefox.png" || cp "$src" "$destdir/firefox.png" | |
} | |
#default128.png default16.png default32.png default48.png default64.png | |
( | |
set -e | |
cd "$install_base/lib/firefox" | |
for icon in browser/chrome/icons/default/default*.png ; do | |
size="$(echo -n "$icon" | sed -e 's/^.*default\([[:digit:]]\+\).png/\1/')" #get size | |
copy_icon "$(pwd)/$icon" "$size" | |
done | |
) | |
update-alternatives --install /usr/bin/x-www-browser x-www-browser "$install_base/bin/firefox" 80 | |
update-alternatives --set x-www-browser /usr/local/bin/firefox | |
I came across this and I finally agree with you.
I am a bit messing around with your gist but finally I'll keep it just as it is.
Thanks again!
Just to be clear : did you put the firefox symlink in /urs/local/bin on purpose? Because I'm afraid that /usr/bin/firefox symlink to firefox-esr will override it
It should not. /usr/local/bin
is generally before /usr/bin
in PATH so the local version will be used. It's even used as the default browser handler because it runs update-alternatives
at the end.
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Which folder is best-suited is a bit unclear TBH. I used
/usr/local
because then/usr/local/bin/firefox
will automatically be in path for everyone on the computer. I think it's not a good practice to have a binary in/usr/local
link back to/opt
, but if you're fine with having to add/opt/firefox/bin
to your path, or an aliasor whatever, I don't see how it could go wrong.You can also provide a full path to firefox's icon in
firefox.desktop
but your desktop environment won't be able to use the best-suited resolution from the multiple choices. It is admitedly not that great of a loss because firefox's icons are essentially the same at every resolution, but it's considered good practice.