#!/bin/bash function error { echo -e "\e[91m$1\e[39m" exit 1 } cd $HOME if [[ "$(id -u)" == 0 ]]; then error "Pi-Apps is not designed to be installed as root! Please try again as a regular user." fi command -v apt >/dev/null || error "apt: command not found. Most likely this system is not running Debian." #Ensure running arm processor if uname -m | grep -q 'x86' ;then error "Pi-Apps is not not supported on x86 processors." fi sudo apt update || error "The command 'sudo apt update' failed. Before Pi-Apps will work, you must fix your apt package-management system." #install yad automatically if ! command -v yad >/dev/null;then sudo apt install -y yad || error "Failed to install yad." fi #remove annoying YAD icon browser launcher sudo rm -f /usr/share/applications/yad-icon-browser.desktop #install git if ! command -v git >/dev/null;then sudo apt install -y git || error "Failed to install git." fi #install curl if ! command -v curl >/dev/null;then sudo apt install -y curl || error "Failed to install curl." fi #download pi-apps if folder missing DIRECTORY="$(readlink -f "$(dirname "$0")")" if [ -z "$DIRECTORY" ] || [ "$DIRECTORY" == "$HOME" ] || [ "$DIRECTORY" == bash ];then DIRECTORY="$HOME/pi-apps" #if directory does not exist, download it if [ ! -d "$DIRECTORY" ];then echo "Downloading Pi-Apps..." output="$(git clone --depth 1 https://github.com/Botspot/pi-apps "$DIRECTORY" 2>&1)" if [ ! -d "$DIRECTORY" ];then error "Pi-Apps download failed!\ngit clone output was: $output" fi fi fi #Past this point, DIRECTORY variable populated with valid pi-apps directory #if chromeOS, install lxterminal if command -v garcon-terminal-handler >/dev/null ;then echo "In order to install apps on chromeOS, a working terminal emulator is required. Installing lxterminal in 10 seconds... (press Ctrl+C to cancel)" sleep 10 sudo apt install -yf lxterminal || error "Failed to install lxterminal on chromeOS!" fi #menu button if [ ! -f ~/.local/share/applications/pi-apps.desktop ];then echo "Creating menu button..." fi mkdir -p ~/.local/share/applications echo "[Desktop Entry] Name=Pi Apps Comment=Raspberry Pi App Store for open source projects Exec=${DIRECTORY}/gui Icon=${DIRECTORY}/icons/logo.png Terminal=false Type=Application Categories=Utility; StartupNotify=true" > ~/.local/share/applications/pi-apps.desktop if [ ! -f ~/.local/share/applications/pi-apps-settings.desktop ];then echo "Creating Settings menu button..." fi echo "[Desktop Entry] Name=Pi Apps Settings Comment=Configure Pi-Apps or create an App Exec=${DIRECTORY}/settings Icon=${DIRECTORY}/icons/logo.png Terminal=false Type=Application Categories=Settings; StartupNotify=true" > ~/.local/share/applications/pi-apps-settings.desktop if [ ! -f ~/.config/autostart/pi-apps-updater.desktop ];then echo "Creating autostarted updater..." fi mkdir -p ~/.config/autostart echo "[Desktop Entry] Name=Pi Apps Updater Exec=${DIRECTORY}/updater onboot Icon=${DIRECTORY}/icons/logo.png Terminal=false Type=Application X-GNOME-Autostart-enabled=true Hidden=false NoDisplay=false" > ~/.config/autostart/pi-apps-updater.desktop mkdir -p "${DIRECTORY}/data" && cd "${DIRECTORY}/data" || error "Failed to make and enter ${DIRECTORY}/data directory!" mkdir -p installed-packages preload settings status update-status categories cd $HOME #hide template app by default "${DIRECTORY}/etc/categoryedit" "template" 'hidden' >/dev/null #hide duplicates if running in twisteros if [ -f /usr/local/bin/twistver ] && [[ $(twistver) == "Twister OS version"* ]]; then #twisteros full apps="CommanderPi Box86 Discord piKiss Retropie Scrcpy Steam Windows 10 Theme Chromium Widevine Lightpad Wine (x86) Mac OS Theme" PREIFS="$IFS" IFS=$'\n' for app in $apps ;do "${DIRECTORY}/etc/categoryedit" "$app" 'hidden' >/dev/null done IFS="$PREIFS" elif [ -f /usr/local/bin/twistver ] && [[ $(twistver) != "Twister OS version"* ]]; then #twisteros lite PREIFS="$IFS" IFS=$'\n' apps="Chromium Widevine Box86 Windows 10 Theme Lightpad Wine (x86) Mac OS Theme" for app in $apps ;do "${DIRECTORY}/etc/categoryedit" "$app" 'hidden' >/dev/null done IFS="$PREIFS" #unhide some apps on twisteros lite that were hidden. #This removes certain apps completely from the category file. Effectively resets them to online default. "${DIRECTORY}/etc/categoryedit" CommanderPi --delete >/dev/null "${DIRECTORY}/etc/categoryedit" Discord --delete >/dev/null "${DIRECTORY}/etc/categoryedit" piKiss --delete >/dev/null "${DIRECTORY}/etc/categoryedit" Scrcpy --delete >/dev/null "${DIRECTORY}/etc/categoryedit" Steam --delete >/dev/null "${DIRECTORY}/etc/categoryedit" 'Chromium Widevine' --delete >/dev/null echo "Finished hiding apps on TwisterOS." fi #pi-apps terminal command if [ ! -f /usr/local/bin/pi-apps ] || ! cat /usr/local/bin/pi-apps | grep -q "${DIRECTORY}/gui";then echo "#!/bin/bash ${DIRECTORY}/gui"' "$@"' | sudo tee /usr/local/bin/pi-apps >/dev/null sudo chmod +x /usr/local/bin/pi-apps echo "You can now launch pi-apps from a terminal, just by running 'pi-apps'" fi if [ "$(ls "$DIRECTORY/data/settings" 2>/dev/null | wc -l)" -le 2 ];then echo "Generating default settings..." fi "${DIRECTORY}/settings" refresh if [ ! -f "$DIRECTORY/data/preload/LIST-" ];then echo "Preloading app list..." fi "${DIRECTORY}/preload" &>/dev/null echo "Installation complete."