#!/bin/sh APP=calibre REPO="kovidgoyal/calibre" # CREATING THE FOLDER mkdir /opt/$APP cd /opt/$APP; # ADD THE REMOVER echo '#!/bin/sh' >> /opt/$APP/remove echo "rm -R -f /usr/share/applications/AM-$APP.desktop /opt/$APP /usr/local/bin/$APP" >> /opt/$APP/remove chmod a+x /opt/$APP/remove mkdir /opt/$APP/tmp cd /opt/$APP/tmp # DOWNLOADING THE DEPENDENCIES wget https://github.com/AppImage/AppImageKit/releases/download/continuous/appimagetool-$(uname -m).AppImage -O appimagetool #wget https://raw.githubusercontent.com/ivan-hc/AM-application-manager/main/tools/pkg2appimage # 64 BIT ONLY (comment to disable) # wget https://github.com/ivan-hc/pkg2appimage-32bit/releases/download/continuous/pkg2appimage-i386.AppImage -O pkg2appimage # 32 BIT ONLY (uncomment to enable) chmod a+x ./appimagetool # DOWNLOAD THE ARCHIVE version=$(curl -Ls https://api.github.com/repos/$REPO/releases | jq '.' | grep -w -v i386 | grep -w -v i686 | grep -w -v aarch64 | grep -w -v arm64 | grep -w -v armv7l | grep browser_download_url | grep -i "x86_64.txz" | cut -d '"' -f 4 | head -1) wget $version echo "$version" >> /opt/$APP/version # CREATING THE APPIMAGE mkdir $APP.AppDir/ tar fx ./*txz* -C ./$APP.AppDir/ echo "[Desktop Entry] Categories=Office; Comment[en_US]=E-book library management: Convert, view, share, catalogue all your e-books Comment=E-book library management: Convert, view, share, catalogue all your e-books Exec=AppRun GenericName[en_US]=E-book library management GenericName=E-book library management Icon=calibre MimeType=application/vnd.openxmlformats-officedocument.wordprocessingml.document;image/vnd.djvu;application/x-mobi8-ebook;application/x-cbr;text/fb2+xml;application/pdf;application/x-cbc;application/vnd.ms-word.document.macroenabled.12;text/rtf;application/epub+zip;application/x-cbz;text/plain;application/x-sony-bbeb;application/oebps-package+xml;application/x-cb7;application/x-mobipocket-ebook;application/ereader;text/html;text/x-markdown;application/xhtml+xml;application/vnd.oasis.opendocument.text;application/x-mobipocket-subscription;x-scheme-handler/calibre; Name=calibre Type=Application X-DBUS-ServiceName= X-DBUS-StartupType= X-KDE-SubstituteUID=false X-KDE-Username=" >> ./$APP.AppDir/$APP.desktop cp ./$APP.AppDir/resources/content-server/calibre.png ./$APP.AppDir/calibre.png cat >> ./$APP.AppDir/AppRun << 'EOF' #!/bin/sh HERE="$(dirname "$(readlink -f "${0}")")" exec "${HERE}"/calibre "$@" EOF chmod a+x ./$APP.AppDir/AppRun ARCH=x86_64 ./appimagetool -n ./$APP.AppDir; cd ..; mv ./tmp/*.AppImage ./$APP; chmod a+x ./$APP rm -R -f ./tmp # LINK ln -s /opt/$APP/$APP /usr/local/bin/$APP # SCRIPT TO UPDATE THE PROGRAM cat >> /opt/$APP/AM-updater << 'EOF' #!/bin/sh APP=calibre REPO="kovidgoyal/calibre" version0=$(cat /opt/$APP/version) version=$(curl -Ls https://api.github.com/repos/$REPO/releases | jq '.' | grep -w -v i386 | grep -w -v i686 | grep -w -v aarch64 | grep -w -v arm64 | grep -w -v armv7l | grep browser_download_url | grep -i "x86_64.txz" | cut -d '"' -f 4 | head -1) if [ $version = $version0 ]; then echo "Update not needed, exit!" else notify-send "A new version of $APP is available, please wait!" mkdir /opt/$APP/tmp cd /opt/$APP/tmp # DOWNLOADING THE DEPENDENCIES wget https://github.com/AppImage/AppImageKit/releases/download/continuous/appimagetool-$(uname -m).AppImage -O appimagetool #wget https://raw.githubusercontent.com/ivan-hc/AM-application-manager/main/tools/pkg2appimage # 64 BIT ONLY (comment to disable) # wget https://github.com/ivan-hc/pkg2appimage-32bit/releases/download/continuous/pkg2appimage-i386.AppImage -O pkg2appimage # 32 BIT ONLY (uncomment to enable) chmod a+x ./appimagetool # DOWNLOAD THE ARCHIVE version=$(curl -Ls https://api.github.com/repos/$REPO/releases | jq '.' | grep -w -v i386 | grep -w -v i686 | grep -w -v aarch64 | grep -w -v arm64 | grep -w -v armv7l | grep browser_download_url | grep -i "x86_64.txz" | cut -d '"' -f 4 | head -1) wget $version # CREATING THE APPIMAGE mkdir $APP.AppDir/ tar fx ./*txz* -C ./$APP.AppDir/ /opt/$APP/$APP --appimage-extract AppRun 1> /dev/null /opt/$APP/$APP --appimage-extract $APP.desktop 1> /dev/null mv ./squashfs-root/$APP.desktop ./$APP.AppDir/$APP.desktop mv ./squashfs-root/AppRun ./$APP.AppDir/AppRun cp ./$APP.AppDir/resources/content-server/calibre.png ./$APP.AppDir/calibre.png chmod a+x ./$APP.AppDir/AppRun ARCH=x86_64 ./appimagetool -n ./$APP.AppDir; if ls ./ | grep mage; then cd .. rm ./version echo $version >> ./version mv --backup=t ./tmp/*.AppImage ./$APP; chmod a+x /opt/$APP/${APP} rm -R -f ./tmp ./*~ fi notify-send "$APP is updated!" fi EOF chmod a+x /opt/$APP/AM-updater # LAUNCHER & ICON app=$(echo $APP | cut -c -3) cd /opt/$APP ./$APP --appimage-extract $APP.desktop 1>/dev/null ./$APP --appimage-extract share/applications/*.desktop 1>/dev/null ./$APP --appimage-extract usr/share/applications/*.desktop 1>/dev/null mv squashfs-root/*.desktop ./$APP.desktop mv squashfs-root/share/applications/*.desktop ./$APP.desktop mv squashfs-root/usr/share/applications/*.desktop ./$APP.desktop if [ ! -e ./$APP.desktop ]; then rm ./$APP.desktop; ./$APP --appimage-extract usr/share/applications/*$app*.desktop mv squashfs-root/usr/share/applications/*.desktop ./$APP.desktop fi if [ ! -e ./$APP.desktop ]; then rm ./$APP.desktop; ./$APP --appimage-extract share/applications/*$app*.desktop 1>/dev/null mv squashfs-root/share/applications/*.desktop ./$APP.desktop fi CHANGEEXEC=$(cat ./$APP.desktop | grep Exec= | tr ' ' '\n' | tr '=' '\n' | tr '/' '\n' | grep $app | head -1) sed -i "s#$CHANGEEXEC#$APP#g" ./$APP.desktop sed -i "s#AppRun#$APP#g" ./$APP.desktop sed -i "s#Exec=/bin/#Exec=#g" ./$APP.desktop sed -i "s#Exec=/usr/bin/#Exec=#g" ./$APP.desktop CHANGEICON=$(cat ./$APP.desktop | grep Icon= | head -1) sed -i "s#$CHANGEICON#Icon=/opt/$APP/icons/$APP#g" ./$APP.desktop mkdir icons ./$APP --appimage-extract *.png 2>&1 | grep -v "squashfs-root"; mv ./squashfs-root/*$app* ./icons/$APP 2>/dev/null ./$APP --appimage-extract *.svg 2>&1 | grep -v "squashfs-root"; mv ./squashfs-root/*$app* ./icons/$APP 2>/dev/null ./$APP --appimage-extract share/icons/*/*/* 1>/dev/null ./$APP --appimage-extract usr/share/icons/*/*/* 1>/dev/null ./$APP --appimage-extract share/icons/*/*/*/* 1>/dev/null ./$APP --appimage-extract usr/share/icons/*/*/*/* 1>/dev/null mv ./squashfs-root/share/icons/hicolor/22x22/apps/*$app* ./icons/$APP 2>/dev/null mv ./squashfs-root/share/icons/hicolor/24x24/apps/*$app* ./icons/$APP 2>/dev/null mv ./squashfs-root/share/icons/hicolor/32x32/apps/*$app* ./icons/$APP 2>/dev/null mv ./squashfs-root/share/icons/hicolor/48x48/apps/*$app* ./icons/$APP 2>/dev/null mv ./squashfs-root/share/icons/hicolor/64x64/apps/*$app* ./icons/$APP 2>/dev/null mv ./squashfs-root/share/icons/hicolor/128x128/apps/*$app* ./icons/$APP 2>/dev/null mv ./squashfs-root/share/icons/hicolor/256x256/apps/*$app* ./icons/$APP 2>/dev/null mv ./squashfs-root/share/icons/hicolor/512x512/apps/*$app* ./icons/$APP 2>/dev/null mv ./squashfs-root/share/icons/hicolor/scalable/apps/*$app* ./icons/$APP 2>/dev/null mv ./squashfs-root/usr/share/icons/hicolor/22x22/apps/*$app* ./icons/$APP 2>/dev/null mv ./squashfs-root/usr/share/icons/hicolor/24x24/apps/*$app* ./icons/$APP 2>/dev/null mv ./squashfs-root/usr/share/icons/hicolor/32x32/apps/*$app* ./icons/$APP 2>/dev/null mv ./squashfs-root/usr/share/icons/hicolor/48x48/apps/*$app* ./icons/$APP 2>/dev/null mv ./squashfs-root/usr/share/icons/hicolor/64x64/apps/*$app* ./icons/$APP 2>/dev/null mv ./squashfs-root/usr/share/icons/hicolor/128x128/apps/*$app* ./icons/$APP 2>/dev/null mv ./squashfs-root/usr/share/icons/hicolor/256x256/apps/*$app* ./icons/$APP 2>/dev/null mv ./squashfs-root/usr/share/icons/hicolor/512x512/apps/*$app* ./icons/$APP 2>/dev/null mv ./squashfs-root/usr/share/icons/hicolor/scalable/apps/*$app* ./icons/$APP 2>/dev/null rm -R -f /opt/$APP/squashfs-root mv ./$APP.desktop /usr/share/applications/AM-$APP.desktop