#!/bin/sh APP=kdenlive # CREATE 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 # DOWNLOAD THE APPIMAGE mkdir tmp cd ./tmp version=$(curl -Ls https://kdenlive.org/en/download/ | grep -Eo "(http|https)://[a-zA-Z0-9./?=_%:-]*" | grep AppImage | head -1) wget $version echo $version >> /opt/$APP/version cd .. mv ./tmp/*mage ./$APP chmod a+x /opt/$APP/$APP rmdir ./tmp # LINK cat >> /usr/local/bin/$APP << 'EOF' #!/bin/sh APP=kdenlive export QT_QPA_PLATFORMTHEME=$QT_QPA_PLATFORMTHEME export QT_FONT_DPI=96 /opt/$APP/$APP "$*" EOF chmod a+x /usr/local/bin/$APP # SCRIPT TO UPDATE THE PROGRAM cat >> /opt/$APP/AM-updater << 'EOF' #!/bin/sh APP=kdenlive version0=$(cat /opt/$APP/version) version=$(curl -Ls https://kdenlive.org/en/download/ | grep -Eo "(http|https)://[a-zA-Z0-9./?=_%:-]*" | grep AppImage | head -1) if [ $version0 = $version ]; 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 version=$(curl -Ls https://kdenlive.org/en/download/ | grep -Eo "(http|https)://[a-zA-Z0-9./?=_%:-]*" | grep AppImage | head -1) wget $version cd .. if test -f ./tmp/*mage; then rm ./version fi echo $version >> ./version mv --backup=t ./tmp/*mage ./$APP chmod a+x /opt/$APP/$APP rm -R -f ./tmp ./*~ 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 *.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 2>/dev/null mv squashfs-root/share/applications/*.desktop ./$APP.desktop 2>/dev/null mv squashfs-root/usr/share/applications/*.desktop ./$APP.desktop 2>/dev/null 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 2>/dev/null fi if [ ! -e ./$APP.desktop ]; then rm ./$APP.desktop; ./$APP --appimage-extract share/applications/*$APP*.desktop mv squashfs-root/share/applications/*.desktop ./$APP.desktop 2>/dev/null 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= | grep $APP | 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 usr/share/icons/hicolor/256x256/apps/*.png mv ./squashfs-root/usr/share/icons/hicolor/256x256/apps/*.png ./icons/$APP 2>/dev/null rm -R -f /opt/$APP/squashfs-root mv ./$APP.desktop /usr/share/applications/AM-$APP.desktop # ROLLBACK SCRIPT cat >> /opt/$APP/$APP-rollback << 'EOF' #!/usr/bin/env bash APP=kdenlive rm -f ./rollback-args* ./AM-rollback # STABLE AND MORE RECENT VERSIONS STABLE=$(curl -Ls https://download.kde.org/stable/kdenlive/ | grep -Eo "[0-9.?]*" | grep -i ".12\|.08\|.04" | uniq | sort -nr) for arg in $STABLE; do for var in $arg; do printf "%s\n" $(curl -Ls https://download.kde.org/stable/kdenlive/$var/linux/ | grep -Eo "[a-zA-Z0-9./?=_%:-]*" | grep -i kdenlive | uniq | sort -nr | grep -v '/' | grep -i appimage) >> "./rollback-args-1" done done # ARCHIVED OLD RELEASES (THAT MAY NOT WORK) ARCHIVED=$(curl -Ls https://download.kde.org/Attic/kdenlive/ | grep -Eo "[0-9.?]*" | grep -i ".12\|.08\|.04" | uniq | sort -nr) for arg in $ARCHIVED; do for var in $arg; do printf "%s\n" $(curl -Ls https://download.kde.org/Attic/kdenlive/$var/linux/ | grep -Eo "[a-zA-Z0-9./?=_%:-]*" | grep -i kdenlive | uniq | sort -nr | grep -v '/' | grep -i appimage) >> "./rollback-args-2" done done # PREPARE THE LIST OF VERSIONS BY MERGING THE TWO ABOVE for arg in $(cat ./rollback-args-1); do for var in $arg; do rel=$(echo $arg | cut -c 10- | cut -c -5) printf "%s\n" https://download.kde.org/stable/kdenlive/$rel/linux/$arg >> "./rollback-args" done done for arg in $(cat ./rollback-args-2); do for var in $arg; do rel=$(echo $arg | cut -c 10- | cut -c -5) printf "%s\n" https://download.kde.org/Attic/kdenlive/$rel/linux/$arg >> "./rollback-args" done done # LET ROLLBACK KDENLIVE echo -e "-----------------------------------------------------------------------\nYou have chosen to roll back $APP.\nRollback will be done from https://kdenlive.org\n-----------------------------------------------------------------------" printf "Select a URL from this menu (read carefully) or press CTRL+C to abort:\n-----------------------------------------------------------------------\n"; sleep 1; select d in $(cat "./rollback-args"); do test -n "$d" && break; echo ">>> Invalid Selection"; done cp ./AM-updater ./AM-rollback sed -i 's/version0/#version0/g' ./AM-rollback sed -i '/show-progress/c\wget -q --show-progress '$d'' ./AM-rollback ./AM-rollback rm -f ./version echo $d >> ./version rm -f ./rollback-args* ./AM-rollback echo -e "\nROLLBACK SUCCESSFUL!" exit EOF chmod a+x /opt/$APP/$APP-rollback