#!/bin/sh # AM INSTALL SCRIPT VERSION 3.5 set -u APP=firefox SITE="https://www.firefox.com" SITE2="ivan-hc/Firefox-appimage" # CREATE DIRECTORIES AND ADD REMOVER [ -n "$APP" ] && mkdir -p "/opt/$APP/tmp" "/opt/$APP/icons" && cd "/opt/$APP/tmp" || exit 1 printf "#!/bin/sh\nset -e\nrm -f /usr/local/bin/$APP\nrm -R -f /opt/$APP" > ../remove printf '\n%s' "rm -f /usr/local/share/applications/$APP-AM.desktop" >> ../remove chmod a+x ../remove || exit 1 # DOWNLOAD AND PREPARE THE APP read -r -p " Choose a package format: 1. Official portable package, with automatic updates (~300 MB). Source: https://www.firefox.com 2. AppImage created from the official package mentioned above (~100 MB). Source: https://github.com/ivan-hc/Firefox-appimage Which version you choose (type a number and press ENTER)?" response RELEASE="" if echo "$response" | grep -q "^1"; then RELEASE="PORTABLE" LANGUAGE=$(curl -Ls https://raw.githubusercontent.com/linuxmint/mdm/master/config/locale.alias | grep -i "$LANG" | grep -o '^\S*') CODE=$(curl -Ls https://releases.mozilla.org/pub/firefox/releases/latest/README.txt | cut -d ':' -f2 | grep -i "$LANGUAGE" | cut -d '=' -f2) wget "https://download.mozilla.org/?product=$APP-latest&os=linux64&lang=$CODE" --trust-server-names || exit 1 [ -e ./*tar.* ] && tar fx ./*tar.* && rm -f ./*tar.* cd .. mv ./tmp/firefox/* ./ rm -R ./tmp || exit 1 elif echo "$response" | grep -q "^2"; then RELEASE="APPIMAGE" version=$(curl -Ls https://api.github.com/repos/ivan-hc/Firefox-appimage/releases | sed 's/[()",{} ]/\n/g' | grep -oi "https.*mage$" | grep -vi "i386|i686|aarch64|arm64|armv7l\|beta\|devedition\|esr\|nightly" | head -1) wget "$version" || exit 1 cd .. mv ./tmp/*mage ./"$APP" rm -R -f ./tmp || exit 1 echo "$version" > ./version chmod a+x ./"$APP" || exit 1 fi [ -z "$RELEASE" ] && exit 0 if [ "$RELEASE" = APPIMAGE ]; then # LINK TO PATH ln -s "/opt/$APP/$APP" "/usr/local/bin/$APP" # SCRIPT TO UPDATE THE PROGRAM (APPIMAGE ONLY) cat <<-'HEREDOC' >> ./AM-updater #!/bin/sh set -u APP=firefox SITE="ivan-hc/Firefox-appimage" version0=$(cat "/opt/$APP/version") version=$(curl -Ls https://api.github.com/repos/ivan-hc/Firefox-appimage/releases | sed 's/[()",{} ]/\n/g' | grep -oi "https.*mage$" | grep -vi "i386|i686|aarch64|arm64|armv7l\|beta\|devedition\|esr\|nightly" | head -1) [ -n "$version" ] || { echo "Error getting link"; exit 1; } if command -v appimageupdatetool >/dev/null 2>&1; then cd "/opt/$APP" || exit 1 appimageupdatetool -Or ./"$APP" && chmod a+x ./"$APP" && echo "$version" > ./version && exit 0 fi if [ "$version" != "$version0" ]; then mkdir "/opt/$APP/tmp" && cd "/opt/$APP/tmp" || exit 1 notify-send "A new version of $APP is available, please wait" wget "$version" || exit 1 # Use tar fx ./*tar* here for example in this line in case a compressed file is downloaded. cd .. mv --backup=t ./tmp/*mage ./"$APP" chmod a+x ./"$APP" || exit 1 echo "$version" > ./version rm -R -f ./*zs-old ./*.part ./tmp ./*~ notify-send "$APP is updated!" else echo "Update not needed!" fi HEREDOC sed -i 's/ / /g' ./AM-updater chmod a+x ./AM-updater || exit 1 # LAUNCHER & ICON ./"$APP" --appimage-extract *.desktop 1>/dev/null && mv ./squashfs-root/*.desktop ./"$APP".desktop ./"$APP" --appimage-extract .DirIcon 1>/dev/null && mv ./squashfs-root/.DirIcon ./DirIcon COUNT=0 while [ "$COUNT" -lt 10 ]; do # Tries to get the actual icon/desktop if it is a symlink to another symlink if [ -L ./"$APP".desktop ]; then LINKPATH="$(readlink ./"$APP".desktop | sed 's|^\./||' 2>/dev/null)" ./"$APP" --appimage-extract "$LINKPATH" 1>/dev/null && mv ./squashfs-root/"$LINKPATH" ./"$APP".desktop fi if [ -L ./DirIcon ]; then LINKPATH="$(readlink ./DirIcon | sed 's|^\./||' 2>/dev/null)" ./"$APP" --appimage-extract "$LINKPATH" 1>/dev/null && mv ./squashfs-root/"$LINKPATH" ./DirIcon fi [ ! -L ./"$APP".desktop ] && [ ! -L ./DirIcon ] && break COUNT=$((COUNT + 1)) done sed -i "s#Exec=[^ ]*#Exec=$APP#g; s#Icon=.*#Icon=/opt/$APP/icons/$APP#g" ./"$APP".desktop mv ./"$APP".desktop /usr/local/share/applications/"$APP"-AM.desktop && mv ./DirIcon ./icons/"$APP" 1>/dev/null rm -R -f ./squashfs-root else # LINK TO PATH ln -s "/opt/$APP/firefox" "/usr/local/bin/$APP" # LAUNCHER rm -f /usr/local/share/applications/"$APP"-AM.desktop cat <<-HEREDOC >> /usr/local/share/applications/"$APP"-AM.desktop [Desktop Entry] Version=1.0 Name=Firefox GenericName=Web Browser GenericName[ca]=Navegador web GenericName[cs]=Webový prohlížeč GenericName[es]=Navegador web GenericName[fa]=مرورگر اینترنتی GenericName[fi]=WWW-selain GenericName[fr]=Navigateur Web GenericName[hu]=Webböngésző GenericName[it]=Browser Web GenericName[ja]=ウェブ・ブラウザ GenericName[ko]=웹 브라우저 GenericName[nb]=Nettleser GenericName[nl]=Webbrowser GenericName[nn]=Nettlesar GenericName[no]=Nettleser GenericName[pl]=Przeglądarka WWW GenericName[pt]=Navegador Web GenericName[pt_BR]=Navegador Web GenericName[sk]=Internetový prehliadač GenericName[sv]=Webbläsare Comment=Browse the Web Comment[ca]=Navegueu per el web Comment[cs]=Prohlížení stránek World Wide Webu Comment[de]=Im Internet surfen Comment[es]=Navegue por la web Comment[fa]=صفحات شبکه جهانی اینترنت را مرور نمایید Comment[fi]=Selaa Internetin WWW-sivuja Comment[fr]=Navigue sur Internet Comment[hu]=A világháló böngészése Comment[it]=Esplora il web Comment[ja]=ウェブを閲覧します Comment[ko]=웹을 돌아 다닙니다 Comment[nb]=Surf på nettet Comment[nl]=Verken het internet Comment[nn]=Surf på nettet Comment[no]=Surf på nettet Comment[pl]=Przeglądanie stron WWW Comment[pt]=Navegue na Internet Comment[pt_BR]=Navegue na Internet Comment[sk]=Prehliadanie internetu Comment[sv]=Surfa på webben Exec=/opt/$APP/$APP %u Terminal=false Type=Application Icon=/opt/$APP/browser/chrome/icons/default/default128.png 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; StartupNotify=true Categories=Network;WebBrowser; Keywords=web;browser;internet; Actions=new-window;new-private-window;profile-manager-window; [Desktop Action Private] Exec=/opt/$APP/$APP --private-window %u Name=Open a New Private Window Name[ach]=Dirica manyen me mung Name[af]=Nuwe privaatvenster Name[an]=Nueva finestra privada Name[ar]=نافذة خاصة جديدة Name[as]=নতুন ব্যক্তিগত উইন্ডো Name[ast]=Ventana privada nueva Name[az]=Yeni Məxfi Pəncərə Name[be]=Новае акно адасаблення Name[bg]=Нов прозорец за поверително сърфиране Name[bn-BD]=নতুন ব্যক্তিগত উইন্ডো Name[bn-IN]=নতুন ব্যক্তিগত উইন্ডো Name[br]=Prenestr merdeiñ prevez nevez Name[brx]=गोदान प्राइभेट उइन्ड' Name[bs]=Novi privatni prozor Name[ca]=Finestra privada nova Name[cak]=K'ak'a' ichinan tzuwäch Name[cs]=Nové anonymní okno Name[cy]=Ffenestr Breifat Newydd Name[da]=Nyt privat vindue Name[de]=Neues privates Fenster Name[dsb]=Nowe priwatne wokno Name[el]=Νέο παράθυρο ιδιωτικής περιήγησης Name[en-GB]=New Private Window Name[en-US]=New Private Window Name[en-ZA]=New Private Window Name[eo]=Nova privata fenestro Name[es-AR]=Nueva ventana privada Name[es-CL]=Nueva ventana privada Name[es-ES]=Nueva ventana privada Name[es-MX]=Nueva ventana privada Name[et]=Uus privaatne aken Name[eu]=Leiho pribatu berria Name[fa]=پنجره ناشناس جدید Name[ff]=Henorde Suturo Hesere Name[fi]=Uusi yksityinen ikkuna Name[fr]=Nouvelle fenêtre de navigation privée Name[fy-NL]=Nij priveefinster Name[ga-IE]=Fuinneog Nua Phríobháideach Name[gd]=Uinneag phrìobhaideach ùr Name[gl]=Nova xanela privada Name[gn]=Ovetã ñemi pyahu Name[gu-IN]=નવી ખાનગી વિન્ડો Name[he]=חלון פרטי חדש Name[hi-IN]=नयी निजी विंडो Name[hr]=Novi privatni prozor Name[hsb]=Nowe priwatne wokno Name[hu]=Új privát ablak Name[hy-AM]=Սկսել Գաղտնի դիտարկում Name[id]=Jendela Mode Pribadi Baru Name[is]=Nýr huliðsgluggi Name[it]=Nuova finestra anonima Name[ja]=新しいプライベートウィンドウ Name[ja-JP-mac]=新規プライベートウインドウ Name[ka]=ახალი პირადი ფანჯარა Name[kk]=Жаңа жекелік терезе Name[km]=បង្អួច​ឯកជន​ថ្មី Name[kn]=ಹೊಸ ಖಾಸಗಿ ಕಿಟಕಿ Name[ko]=새 사생활 보호 모드 Name[kok]=नवो खाजगी विंडो Name[ks]=نْو پرایوٹ وینڈو& Name[lij]=Neuvo barcon privou Name[lo]=ເປີດຫນ້າຕ່າງສວນຕົວຂື້ນມາໃຫມ່ Name[lt]=Naujas privataus naršymo langas Name[ltg]=Jauns privatais lūgs Name[lv]=Jauns privātais logs Name[mai]=नया निज विंडो (W) Name[mk]=Нов приватен прозорец Name[ml]=പുതിയ സ്വകാര്യ ജാലകം Name[mr]=नवीन वैयक्तिक पटल Name[ms]=Tetingkap Persendirian Baharu Name[my]=New Private Window Name[nb-NO]=Nytt privat vindu Name[ne-NP]=नयाँ निजी सञ्झ्याल Name[nl]=Nieuw privévenster Name[nn-NO]=Nytt privat vindauge Name[or]=ନୂତନ ବ୍ୟକ୍ତିଗତ ୱିଣ୍ଡୋ Name[pa-IN]=ਨਵੀਂ ਪ੍ਰਾਈਵੇਟ ਵਿੰਡੋ Name[pl]=Nowe okno prywatne Name[pt-BR]=Nova janela privativa Name[pt-PT]=Nova janela privada Name[rm]=Nova fanestra privata Name[ro]=Fereastră privată nouă Name[ru]=Новое приватное окно Name[sat]=नावा निजेराक् विंडो (W ) Name[si]=නව පුද්ගලික කවුළුව (W) Name[sk]=Nové okno v režime Súkromné prehliadanie Name[sl]=Novo zasebno okno Name[son]=Sutura zanfun taaga Name[sq]=Dritare e Re Private Name[sr]=Нови приватан прозор Name[sv-SE]=Nytt privat fönster Name[ta]=புதிய தனிப்பட்ட சாளரம் Name[te]=కొత్త ఆంతరంగిక విండో Name[th]=หน้าต่างส่วนตัวใหม่ Name[tr]=Yeni gizli pencere Name[tsz]=Juchiiti eraatarakua jimpani Name[uk]=Приватне вікно Name[ur]=نیا نجی دریچہ Name[uz]=Yangi maxfiy oyna Name[vi]=Cửa sổ riêng tư mới Name[wo]=Panlanteeru biir bu bees Name[xh]=Ifestile yangasese entsha Name[zh-CN]=新建隐私浏览窗口 Name[zh-TW]=新增隱私視窗 HEREDOC fi