Merge branch 'Botspot:master' into master

pull/889/head
necro-nemesis 3 years ago committed by GitHub
commit d83e7d1d8b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -1,2 +0,0 @@
# These are supported funding model platforms
custom: https://paypal.me/josephmarchand

@ -7,8 +7,10 @@ assignees: ''
---
Can this app run on RPi? If so, please provide a link to a tutorial if applicable.
Is this app something many GUI users would find useful?
Is this app installable with `sudo apt install`?
Can this app run on RPi? If so, please provide a link to a tutorial if applicable.
Is this app something many GUI users would find useful?
Is this app installable with `sudo apt install`?
If you've created a zip file for this app, upload it here.

@ -1,5 +1,5 @@
**NOTE**: This changelog covers the major events in pi-apps like new apps being added. If every action since day one was mentioned, "I suppose that even the world itself could not contain the books that should be written." ;)
Last updated: March 29, 2021 by [RaspberryPiNews](https://www.youtube.com/channel/UCmp6JswV90SV5agNFGQuWkw)
Last updated: June 21, 2021 by [RaspberryPiNews](https://www.youtube.com/channel/UCmp6JswV90SV5agNFGQuWkw)
- **3/20/2020** Initial idea of an app store. https://www.raspberrypi.org/forums/viewtopic.php?f=63&t=268455
@ -83,14 +83,37 @@ Added pi-apps terminal command (you can now run pi-apps with `pi-apps`).
- **3/8/2021** Added Snapdrop app, updated intellij IDEA and Minecraft Pi (Modded) with a FPS counter and newer build
- **3/10/2021** Added Decent 1/2 and ppsspp apps
- **3/11/2021** Changed box86 install to use itai's apt repository
- **3/12/2021** Updated Tor Browser to 10.0.13, changed Node.js app to use nvm version manager and unhid BalenaEtcher on Twister OS
- **3/12/2021** Changed Node.js app to use nvm version manager and unhid BalenaEtcher on Twister OS
- **3/14/2021** Added Stunt Rally app, and added a "Installed" category for installed apps
- **3/15/2021** Added Back to Chromium v86 app, and updated box86 to be installable on aarch64 OSes
- **3/16/2021** Added Lokinet app and large upgrade to Zoom app
- **3/17/2021** Added 64-bit support for Vivaldi
- **3/18/2021** Added Notepad++ app and made Doom 3 run in a 64-bit kernel with a 32-bit userland
- **3/19/2021** redesign all program icons, the Pi-Apps logo, and all screenshots.
- **3/19/2021** Redesign all program icons, the Pi-Apps logo, and all screenshots.
- **3/20/2021** Updated eDEX-UI to v2.2.7, completely transitioned to Itai's box86 builds for all apps, added WACUP app and made a new "Multimedia" category
- **3/24/2021** Added Libreoffice MS Theme app, and automarked box86/Wine as installed on Twister OS
- **3/28/2021** Hide less apps on Twister OS Lite
- **3/29/2021** Updated QEMU to v5.2.90
- **3/30/2021** Merge all Chromium downgrade apps into "Downgrade Chromium" and added Github-CLI app
- **3/31/2021** Updated Arduino IDE to change install location
- **4/3/2021** Updated Update Buddy to show a update notification like pi-apps
- **4/5/2021** Added Turbo Scratch app
- **4/6/2021** Added WeChat app and bumped Github-CLI version
- **4/7/2021** Bumped Discord version to renamed "WebCord"
- **4/8/2021** Added new api script, improved icons, faster preloading. Updated whatsapp + stackedit. Added Bongo Cam and OpenSCAD apps.
- **4/9/2021** Display user count for apps and squarify icons
- **4/10/2021** Added flameshot, Processing IDE, Scratch 2 (with flash player fixes), Heros 2 and Linux Mint's Web Apps
- **4/12/2021** Added AstroMenace app
- **4/13/2021** Added Lego Digital Designer app and changed Wine to add extra menu sortcuts
- **4/14-15-20/2021** Changed pkg-install to use dummy debs for depends to let APT handle depend issues
- **4/24/2021** Forced updater to not update Wine and Steam on Twister OS
- **5/3/2021** Added PiSafe app
- **5/4/2021** Added blockpi and Windows Screensavers apps, numerous changes to api script and removed up/down buttons in GUI
- **5/5/2021** Added Drawing app and updated install/uninstall GUI icons
- **5/6/2021** Updated trash icon
- **5/7/2021** Add Chiaki app and fixed terminal title when multi-installing apps
- **5/9/2021** Added qterminal support to pi-apps and fix Wine precompiled kernel
- **5/14/2021** Fixed update-exclusion and preload-daemon. Also added icon for disabled apps and made piKiss 32-bit only
- **5/19/2021** Fixed Box86 multiarch on 64-bit
- **5/24/2021** Allowed selecting apps to update in updater and added more api functions.
- **6/19/2021** Updater MCPI Modded to v2.x and use APT repo instead of pi-apps updates to allow for faster package updates
- **6/21/2021** Added 1.17 support to MC Java

@ -2,8 +2,8 @@
## Raspberry Pi App Store for Open Source Projects
Linux is harder to master than Windows. It's geared toward power users, and you will encounter problems if you follow tutorials.
Because of the lack of available software on the `apt` repositories, most Raspberry Pi owners never use their Pies to their full, desktop PC, potential.
Countless **Raspberry Pies remain in disuse** for this very reason. Something must be done!
Because of the lack of available software on the `apt` repositories, most Raspberry Pi owners never use their Pis to their full, desktop PC, potential.
Countless **Raspberry Pis remain in disuse** for this very reason. Something must be done!
Introducing **Pi-Apps**, basically a list of pre-made apps you can install with **one click**.
**[ETA Prime](https://www.youtube.com/watch?v=oqNWJ52DLes)** (a very well known RPi YouTuber) says:
@ -12,23 +12,24 @@ Introducing **Pi-Apps**, basically a list of pre-made apps you can install with
> I want to give the devs of Pi-Apps a big shout-out."
## To install Pi-Apps
Compatible operating systems: **Raspberry Pi OS** and most other Debian-based ARM operating systems like Twister OS, MX Linux, Kali Linux, and Ubuntu.
```
wget -qO- https://raw.githubusercontent.com/Botspot/pi-apps/master/install | bash
```
<details>
<summary>Manual installation</summary>
The install script ensures [YAD](https://github.com/v1cont/yad) is installed, creates two menu buttons, an auto-started updater, and a file (`/usr/local/bin/pi-apps`) that allows pi-apps to be run from terminal. Besides those, nothing is modified outside of the Pi-Apps folder.
# installation
<details>
<summary><b>To install manually</b> if you prefer to see what happens under the hood</summary>
To manually install Pi-Apps:
```
git clone https://github.com/Botspot/pi-apps
~/pi-apps/install
```
</details>
The install script ensures YAD is installed, creates two menu buttons, an autostarted updater, and a file (`/usr/local/bin/pi-apps`) that allows pi-apps to be run from terminal. Besides those, nothing is modified outside your home directory.
<details>
<summary>To uninstall Pi-Apps</summary>
<summary><b>To uninstall Pi-Apps</b></summary>
To uninstall Pi-Apps:
```
@ -47,7 +48,7 @@ Menu -> Accessories -> Pi Apps, or run `pi-apps` in a terminal. Run Pi-Apps from
- [ETA Prime's Pi-Apps & Minecraft Java video](https://www.youtube.com/watch?v=oqNWJ52DLes)
## What do others say about Pi-Apps?
> "Awesome. Thanks for doing this." - **[Novaspirit Tech](youtube.com/novaspirittech)** (large RPi YouTuber) on Discord
> "Awesome. Thanks for doing this." - **[Novaspirit Tech](https://www.youtube.com/novaspirittech)** (large RPi YouTuber) on Discord
> Thanks so much to Botspot for creating this; it's a great program." - **[leepspvideo](https://www.youtube.com/watch?v=zxyWQ3FV98I)** (large RPi YouTuber)
@ -102,16 +103,19 @@ Embed code:
> For a long time I have been saddened by how few people are aware of open-source RPi software projects. Many of these projects are extremely useful and beneficial, but there has never been a good way to distribute them.
> The repositories don't host them, and they usually aren't advertised very well, so how will people find them?
> Most people never find them.
> One day I realized: Why not make my own app store that specializes in all the community RPi software projects out there? It will help more users find the software, and at the same time it would provide a super simple way to install them.
> One day I realized: Why not make an app store that specializes in all the community RPi software projects out there? It will help more users find the software, and at the same time it would provide a super simple way to install them.
> (Which would you rather do - click a shiny Install button, or copy-n-paste a bunch of commands from a sketchy blog tutorial?)
- How long did it take to program this?
> About two weeks of nearly non-stop coding to make Pi-Apps from the ground-up. And since then, I've regularly fixed bugs, solved problems, adding new features, and handled new app submissions.
> About two weeks of nearly non-stop coding to lay the groundwork. Since then, I've continually optimized performance, fixed bugs, solved problems, added new features, and handled new app submissions.
- Is Pi-Apps still under development?
> Sure is! Initial development is done for the most part, and I don't see any more [major features](https://github.com/Botspot/pi-apps#to-do) being added to Pi-Apps's core functionality. (besides maybe allowing `apt`-package apps in the future)
> But, there's always an app or two that need attention, and dozens of app requests. It's enough work to keep a *team* of developers busy.
- Is Pi-Apps free?
> Absolutely! Pi-Apps is not a product or service: Anyone is welcome to use it; no-one should feel compelled/required to donate.
- How can I help?
> - It's always nice to leave a kind word about Pi-Apps on forums and in comments. In addition to helping others find this useful software, you may just get added to [the hall of fame](https://github.com/Botspot/pi-apps#what-do-others-say-about-pi-apps)!
> - You can [donate](https://paypal.me/josephmarchand) if you'd like. The money goes to me (minus the Paypal fees), and helps support future open-source development. Some of the money goes to placing [bounties](https://github.com/ptitSeb/box86/issues/296) on apps that I'd like to see completed by someone else who has skills/time that I don't have.

409
api

@ -0,0 +1,409 @@
#!/bin/bash
error() {
echo -e "\e[91m$1\e[39m" 1>&2
exit 1
}
#if this script is being run standalone, not sourced
if [[ "$0" == */api ]];then
DIRECTORY="$(readlink -f "$(dirname "$0")")"
fi
#echo "API script thinks directory is $DIRECTORY" 1>&2
repo_url="$(cat "${DIRECTORY}/etc/git_url" || echo 'https://github.com/Botspot/pi-apps')"
#determine if host system is 64 bit arm64 or 32 bit armhf
if [ ! -z "$(file "$(readlink -f "/sbin/init")" | grep 64)" ];then
arch=64
elif [ ! -z "$(file "$(readlink -f "/sbin/init")" | grep 32)" ];then
arch=32
else
error "Failed to detect OS CPU architecture! Something is very wrong."
fi
list_intersect() { #Outputs only the apps that appear in both stdin and in $1
# change \n to \| | remove last "\|"
grep -x "$(echo "$1" | sed -z 's/\n/\\|/g' | sed -z 's/\\|$/\n/g')"
}
list_subtract() { #Outputs a list of apps from stdin, minus the ones that appear in $1
# change \n to \| | remove last "\|"
grep -vx "$(echo "$1" | sed -z 's/\n/\\|/g' | sed -z 's/\\|$/\n/g')"
}
list_apps() { # $1 can be: installed, uninstalled, corrupted, cpu_installable, hidden, visible, online, online_only, local, local_only
if [ -z "$1" ] || [ "$1" == local ];then
#list all apps
ls "${DIRECTORY}/apps"
elif [ "$1" == all ];then
#combined list of apps, both online and local. Removes duplicate apps from the list.
echo -e "$(list_apps local)\n$(list_apps online)" | sort | uniq
elif [ "$1" == installed ];then
#list installed apps
#list apps| only show ( list of installed apps | remove match string | basename )
list_apps local | list_intersect "$(grep -rx 'installed' "${DIRECTORY}/data/status" | awk -F: '{print $1}' | sed 's!.*/!!')"
elif [ "$1" == corrupted ];then
#list corrupted apps
#list apps|only show ( list of corrupted apps | remove match string | basename )
list_apps local | list_intersect "$(grep -rx 'corrupted' "${DIRECTORY}/data/status" | awk -F: '{print $1}' | sed 's!.*/!!')"
elif [ "$1" == disabled ];then
#list corrupted apps
#list apps|only show ( list of disabled apps | remove match string | basename )
list_apps local | list_intersect "$(grep -rx 'disabled' "${DIRECTORY}/data/status" | awk -F: '{print $1}' | sed 's!.*/!!')"
elif [ "$1" == uninstalled ];then
#list uninstalled apps
#list apps that have a status file containing "uninstalled"
list_apps local | list_intersect "$(grep -rx 'uninstalled' "${DIRECTORY}/data/status" | awk -F: '{print $1}' | sed 's!.*/!!')"
#also list apps that don't have a status file
list_apps local | list_subtract "$(ls "${DIRECTORY}/data/status")"
elif [ "$1" == cpu_installable ];then
#list apps that can be installed on the device's OS architecture (32-bit or 64-bit)
#find all apps that have install-XX script or an install script
find "${DIRECTORY}/apps" -type f \( -name "install-$arch" -o -name "install" \) | sed "s+/install-$arch++g" | sed "s+/install++g" | sed "s+${DIRECTORY}/apps/++g" | sort | uniq
elif [ "$1" == hidden ];then
#list apps that are hidden
cat "${DIRECTORY}/data/categories/structure" | grep '|hidden' | awk -F'|' '{print $1}'
elif [ "$1" == visible ];then
#list apps that are in any other category but 'hidden', and aren't disabled
cat "${DIRECTORY}/data/categories/structure" | grep -v '|hidden' | awk -F'|' '{print $1}' # | list_subtract "$(list_apps disabled)"
elif [ "$1" == online ];then
#list apps that exist on the online git repo
if [ -d "${DIRECTORY}/update/pi-apps/apps" ];then
#if update folder exists, just use that
ls "${DIRECTORY}/update/pi-apps/apps" | grep .
else
#if update folder doesn't exist, then parse github HTML to get a list of online apps. Horrible idea, but it works!
wget -qO- "${repo_url}/tree/master/apps" | grep 'title=".*" data-pjax=' -o | sed 's/title="//g' | sed 's/" data-pjax=//g'
fi
elif [ "$1" == online_only ];then
#list apps that exist only on the git repo, and not locally
list_apps online | list_subtract "$(list_apps local)"
elif [ "$1" == local_only ];then
#list apps that exist only locally, and not on the git repo
list_apps local | list_subtract "$(list_apps online)"
fi
}
app_categories() { #lists all apps in a virtual filesystem based on categories file
#cat "${DIRECTORY}/data/categories/structure" | awk -F'|' '{print $2"/"$1}'
#find apps not in categories file
{
missingapps="$(list_apps | list_subtract "$(cat "${DIRECTORY}/data/categories/structure" | awk -F'|' '{print $1}')")"
if [ ! -z "$missingapps" ];then
PREIFS="$IFS"
IFS=$'\n'
for app in $missingapps ;do
echo "WARNING: $app not found in categories file." 1>&2
if list_apps online | grep -qx "$app" ;then
#if app found online, then use online category line
if [ -z "$onlinestructurefile" ];then
onlinestructurefile="$(wget -qO- 'https://raw.githubusercontent.com/Botspot/pi-apps/master/data/categories/structure')"
fi
if echo "$onlinestructurefile" | grep -q '^'"$app|" ;then
#if line found in online structure file
echo "Putting $app in the $(echo "$onlinestructurefile" | grep '^'"$app|" | awk -F'|' '{print $2}') category." 1>&2
echo "$(echo "$onlinestructurefile" | grep '^'"$app|")" >> "${DIRECTORY}/data/categories/structure"
else
#app exists online, but no structure line found
echo -e "\e[33mHUGE WARNING: the $app exists on github, but no category was found for it on github!\nPlease report this to Botspot.\e[39m" 1>&2
echo "Putting $app in the / category." 1>&2
#put the app in root directory - no category
echo "$app|" >> "${DIRECTORY}/data/categories/structure"
fi
else
#app not found online
echo "Putting $app in the / category." 1>&2
#put the app in root directory - no category
echo "$app|" >> "${DIRECTORY}/data/categories/structure"
fi
done
IFS="$PREIFS"
fi
}
#find apps in categories file that don't exist
{
ghostapps="$(cat "${DIRECTORY}/data/categories/structure" | awk -F'|' '{print $1}' | list_subtract "$(list_apps)")"
if [ ! -z "$ghostapps" ];then
PREIFS="$IFS"
IFS=$'\n'
for app in $ghostapps ;do
echo "WARNING: $app does not exist but it was found in categories file." 1>&2
echo "Removing $app from the categories file..." 1>&2
#put the app in root directory - no category
sed -i "/$app/d" "${DIRECTORY}/data/categories/structure"
done
IFS="$PREIFS"
fi
}
#category file cleaned up past this point
#show normal categories
cat "${DIRECTORY}/data/categories/structure" | grep . | awk -F'|' '{print $2"/"$1}' | sed 's+^/++g'
#show special Installed category
list_apps installed | sed 's+^+Installed/+g'
#show special All Apps category
list_apps cpu_installable | list_intersect "$(list_apps visible)" | sed 's+^+All Apps/+g'
}
usercount() { #Return number of users for specified app. $1 is app name. if empty, all are shown.
clicklist="$(wget -qO- 'https://raw.githubusercontent.com/Botspot/pi-apps-analytics/main/clicklist')"
[ -z "$clicklist" ] && error "usercount: clicklist empty. Likely no internet connection"
if [ -z "$1" ];then
echo "$clicklist"
else
# $1 is app
echo "$clicklist" | grep " $1"'$' | awk '{print $1}' | head -n1
fi
}
text_editor() { #Open user-preferred text editor. $1 is file to open
[ -z "$1" ] && error "text_editor(): no file specified"
#find the best text editor
preferrededitor="$(cat "${DIRECTORY}/data/settings/Preferred text editor")"
#change preferred editor if user-default doesn't exist
if ! command -v "$preferrededitor" >/dev/null;then
preferrededitor=geany
fi
if ! command -v "$preferrededitor" >/dev/null;then
preferrededitor=mousepad
fi
if ! command -v "$preferrededitor" >/dev/null;then
preferrededitor=leafpad
fi
if ! command -v "$preferrededitor" >/dev/null;then
preferrededitor=nano
fi
if [ "$preferrededitor" == nano ];then
#terminal-based text editor
"${DIRECTORY}/etc/terminal-run" "nano "\""$1"\""" "Editing $(basename "$1")"
else
#non-terminal text editor
"$preferrededitor" "$1"
fi
}
script_name() { #returns name of install script(s) for the $1 app. outputs: '', 'install-32', 'install-64', 'install', 'install-32 install-64'
[ -z "$1" ] && error 'script_name: requires an argument'
#ensure $1 is valid app name
[ ! -d "${DIRECTORY}/apps/$1" ] && error "script_name: '$1' is an invalid app name.\n${DIRECTORY}/apps/$1 does not exist."
if [ -f "${DIRECTORY}/apps/$1/install-32" ] && [ ! -f "${DIRECTORY}/apps/$1/install-64" ];then
echo 'install-32'
elif [ -f "${DIRECTORY}/apps/$1/install-64" ] && [ ! -f "${DIRECTORY}/apps/$1/install-32" ];then
echo 'install-64'
elif [ -f "${DIRECTORY}/apps/$1/install-64" ] && [ -f "${DIRECTORY}/apps/$1/install-32" ];then
echo 'install-32 install-64'
elif [ -f "${DIRECTORY}/apps/$1/install" ];then
echo 'install'
else
true
#error "No install script found for the $app app! Please report this to Botspot."
fi
}
script_name_cpu() { #get script name to run based on detected CPU arch
[ -z "$1" ] && error 'script_name_cpu: requires an argument'
#ensure $1 is valid app name
if ! list_apps all | grep -q "$1" ;then
error "script_name_cpu: '$1' is an invalid app name."
fi
#this is used by the updater so we need to check the update folder too
if [ -f "${DIRECTORY}/apps/$1/install-32" ] && [ $arch == 32 ];then
echo 'install-32'
elif [ -f "${DIRECTORY}/apps/$1/install-64" ] && [ $arch == 64 ];then
echo 'install-64'
elif [ -f "${DIRECTORY}/apps/$1/install" ];then
echo 'install'
elif [ -f "${DIRECTORY}/update/pi-apps/apps/$1/install-32" ] && [ $arch == 32 ];then
echo 'install-32'
elif [ -f "${DIRECTORY}/update/pi-apps/apps/$1/install-64" ] && [ $arch == 64 ];then
echo 'install-64'
elif [ -f "${DIRECTORY}/update/pi-apps/apps/$1/install" ];then
echo 'install'
else
true #app not compatible with current arch
fi
}
app_status() { #Gets the $1 app's current status. installed, uninstalled, corrupted, disabled
[ -z "$1" ] && error 'app_status: $1 variable empty!'
if [ -f "${DIRECTORY}/data/status/${1}" ];then
cat "${DIRECTORY}/data/status/${1}"
else
echo 'uninstalled' #if app status file doesn't exist, assume uninstalled
fi
}
will_reinstall() { #return 0 if $1 app will be reinstalled during an update, otherwise return 1.
[ -z "$1" ] && error 'will_reinstall: requires an argument'
#detect which installation script exists and get the hash for that one
scriptname="$(script_name_cpu "$1")"
oldinstallhash=$(sha1sum "${DIRECTORY}/apps/${1}/${scriptname}" | awk '{print $1}')
newinstallhash=$(sha1sum "${DIRECTORY}/update/pi-apps/apps/${1}/${scriptname}" 2>/dev/null | awk '{print $1}')
#if install script was changed #if installed already
if [ "$newinstallhash" != "$oldinstallhash" ] && [ "$(app_status "${1}")" == 'installed' ];then
return 0
else
return 1
fi
}
runonce() { #run command only if it's never been run before. Useful for one-time migration or setting changes.
#Runs a script in the form of stdin
script="$(cat /dev/stdin)"
runonce_hash="$(echo "$script" | sha256sum | awk '{print $1}')"
if grep -qx '^'"$runonce_hash"'$' "${DIRECTORY}/data/runonce_hashes" ;then
#hash found
#echo "runonce: '$script' already run before. Skipping."
true
else
#run the script.
bash <(echo "$script")
#if it succeeds, add the hash to the list to never run it again
if [ $? == 0 ];then
echo "$runonce_hash" >> "${DIRECTORY}/data/runonce_hashes"
echo "'$script' succeeded. Added to list."
else
echo "'$script' failed. Not adding hash to list."
fi
fi
}
apt_lock_wait() {
echo -n "Waiting until APT locks are released... "
while sudo fuser /var/lib/dpkg/lock &>/dev/null ; do
sleep 0.5
done
while sudo fuser /var/lib/apt/lists/lock &>/dev/null ; do
sleep 0.5
done
if [ -f /var/log/unattended-upgrades/unattended-upgrades.log ]; then
while sudo fuser /var/log/unattended-upgrades/unattended-upgrades.log &>/dev/null ; do
sleep 0.5
done
fi
echo "Done"
}
format_log_file() { #remove ANSI escape sequences from a given file, and add OS information to beginning of file
[ -z "$1" ] && error "format_log_file: no filename given!"
[ ! -f "$1" ] && error "format_log_file: given filename ($1) does not exist or is not a file!"
echo -e "$(get_device_info)\n\nBEGINNING OF ERROR LOG:\n-----------------------\n\n$(cat "$1" | sed 's/\x1b\[[0-9;]*m//g' | sed 's/\x1b\[[0-9;]*//g')" > "$1"
}
get_device_info() { #returns information about current install and hardware
echo "OS: $(cat /etc/os-release | grep PRETTY_NAME | tr -d '"' | awk -F= '{print $2}')"
echo "OS architecture: ${arch}-bit"
echo "Kernel: $(uname -m) $(uname -r)"
echo "Device model: $(cat /proc/cpuinfo | grep Model | sed 's/Model.*: //g')"
if [ -f /etc/rpi-issue ];then
echo "Raspberry Pi OS image version: $(cat /etc/rpi-issue | grep 'Raspberry Pi reference' | sed 's/Raspberry Pi reference //g')"
fi
if [ ! -z "$LANG" ];then
echo "Language: $LANG"
elif [ ! -z "$LC_ALL" ];then
echo "Language: $LC_ALL"
fi
if [ -f "${DIRECTORY}/gui" ];then
echo "Pi-Apps gui script datestamp: $(date -r "${DIRECTORY}/gui")"
fi
}
send_error_report() { #non-interactively send a Pi-Apps error log file to the Botspot discord server
[ -z "$1" ] && error "send_error_report(): requires an argument"
[ ! -f "$1" ] && error "send_error_report(): '$1' is not a valid file."
command -v curl >/dev/null || error "send_error_report(): Cannot send report: curl command not found!"
errors="$(bash <(base64 -d <<<"Y3VybCAtRiAiZmlsZT1AXCIK$(base64 <<<"$1")XCI7ZmlsZW5hbWU9XCIK$(base64 <<<"$(basename "$1" | sed 's/\.log.*/.txt/g')")XCIiICIkKHdnZXQgLXFPLSAiJChiYXNlNjQgLWQgPDw8ImFIUjBjSE02THk5eVlYY3VaMmwwYUhWaWRYTmxjbU52Ym5SbGJuUXVZMjl0TDBKdmRITndiM1F2Y0drdFlYQndjeTFoYm1Gc2VYUnBZM012YldGcGJpOWxjbkp2Y2kxc2IyY3RkMlZpYUc5dmF3bz0iKSIgfCAkKGJhc2U2NCAtZCA8PDwiWW1GelpUWTBJQzFrQ2c9PSIpKSIK" | tr -d '\n') 2>&1)"
[ $? != 0 ] && error "curl failed to upload log file!\nErrors:\n$errors"
}
send_error_report_gui() { #Ask user for permission to send error report
[ -z "$1" ] && error "send_error_report_gui(): requires an argument for error report file!"
[ ! -f "$1" ] && error "send_error_report_gui(): Given error report file ($1) does not exist!"
[ -z "$2" ] && error "send_error_report_gui(): requires an argument for window text!"
command -v curl >/dev/null || error "send_error_report_gui(): curl is not installed!"
export -f text_editor
export DIRECTORY
yad --center --title="Send error report?" --window-icon="${DIRECTORY}/icons/logo.png" \
--text="$2"$'\n'"Send anonymous error report to Pi-Apps developers?"$'\n'"Support is available on <a href=\"https://discord.gg/RXSTvaUvuu\">Discord</a> and <a href=\"https://github.com/Botspot/pi-apps/issues/new/choose\">Github</a>." --on-top \
--button='Send report'!"${DIRECTORY}/icons/upload.png":0 \
--button='View report'!"${DIRECTORY}/icons/log-file.png"!"View the log file to be sent."$'\n'"Feel free to edit the file with more debug information to help us.":"bash -c 'text_editor "\""$1"\""'" \
--button="Don't send"!"${DIRECTORY}/icons/exit.png":1
button=$?
#echo "Button: $button"
if [ "$button" == 0 ];then
send_error_report "$1"
fi
}
#if this script is being run standalone, not sourced
if [[ "$0" == */api ]];then
if [ ! -z "$1" ];then
#if user input a function command, then run it with arguments.
#Keep in mind this could run any command the user wanted, not necessarily exclusively function commands.
"$@"
fi
fi

Binary file not shown.

Before

Width:  |  Height:  |  Size: 776 B

After

Width:  |  Height:  |  Size: 6.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

After

Width:  |  Height:  |  Size: 6.6 KiB

@ -9,18 +9,18 @@ function error {
"${DIRECTORY}/pkg-install" "adb ffmpeg libsdl2-2.0-0 python3-pip python3-tk gcc git pkg-config meson ninja-build libavcodec-dev libavformat-dev libavutil-dev libsdl2-dev" "$(dirname "$0")" || exit 1
#SCRCPY
sudo rm -rf ~/scrcpy /usr/local/share/scrcpy ~/.local/share/applications/scrcpy.desktop 2>/dev/null
wget https://misapuntesde.com/rpi_share/scrcpy-1.13.tar.gz || error "Failed to download!"
tar -xf scrcpy-1.13.tar.gz || error "Failed to extract!"
rm scrcpy-1.13.tar.gz
ln -s /usr/bin/adb $HOME/scrcpy/
sudo mkdir -p /usr/local/share/scrcpy
sudo cp -af $HOME/scrcpy/scrcpy-server /usr/local/share/scrcpy/scrcpy-server
#END OF SCRCPY
if [ -e ~/scrcpy ] && [ -e /usr/bin/adb];then
#SCRCPY
wget https://misapuntesde.com/rpi_share/scrcpy-1.13.tar.gz || error "Failed to download!"
tar -xf scrcpy-1.13.tar.gz || error "Failed to extract!"
rm scrcpy-1.13.tar.gz
ln -s /usr/bin/adb $HOME/scrcpy/
sudo mkdir -p /usr/local/share/scrcpy
sudo cp -af $HOME/scrcpy/scrcpy-server /usr/local/share/scrcpy/scrcpy-server
#END OF SCRCPY
fi
rm -rf ~/droidbuddy
git clone https://gitlab.com/gazlene/droidbuddy.git || error 'Could not clone AndroidBuddy repo!'

@ -8,11 +8,11 @@ function error {
}
#file name for future updates
filename='anydesk_6.0.1-1_armhf'
filename='anydesk_6.1.1-1_armhf'
#download the deb file
wget https://download.anydesk.com/rpi/${filename}.deb || error "Failed to downloading file. Make sure 'wget' is installed and verify your Internet Network Connection"
# Installing the software with permissions
sudo apt install -y --fix-broken ~/${filename}.deb || error "Failed to install it using gdebi"
sudo apt install -y --fix-broken ~/${filename}.deb || error "Failed to install deb file"

@ -7,13 +7,15 @@ function error {
exit 1
}
VERSION=arduino-1.8.15
cd ~/.local/share
rm -f arduino-1.8.13-linuxarm.tar.xz
wget https://downloads.arduino.cc/arduino-1.8.13-linuxarm.tar.xz || error "failed to download!"
rm -f $(pwd)/$VERSION-linuxarm.tar.xz
wget https://downloads.arduino.cc/$VERSION-linuxarm.tar.xz || error "failed to download!"
tar -xf arduino-1.8.13-linuxarm.tar.xz || error "failed to extract with tar!"
arduino-1.8.13/install.sh || error "failed to run install as $USER user!"
sudo arduino-1.8.13/install.sh || error "failed run install as root user!"
tar -xf $(pwd)/$VERSION-linuxarm.tar.xz || error "failed to extract with tar!"
$(pwd)/$VERSION/install.sh || error "failed to run install as $USER user!"
sudo $(pwd)/$VERSION/install.sh || error "failed run install as root user!"
rm -f $HOME/Desktop/arduino-arduinoide.desktop arduino-1.8.13-linuxarm.tar.xz
rm -f $HOME/Desktop/arduino-arduinoide.desktop $(pwd)/$VERSION-linuxarm.tar.xz
exit 0

@ -7,13 +7,15 @@ function error {
exit 1
}
VERSION=arduino-1.8.15
cd ~/.local/share
rm -f arduino-1.8.13-linuxaarch64.tar.xz
wget https://downloads.arduino.cc/arduino-1.8.13-linuxaarch64.tar.xz || error "failed to download!"
rm -f $(pwd)/$VERSION-linuxaarch64.tar.xz
wget https://downloads.arduino.cc/$VERSION-linuxaarch64.tar.xz || error "failed to download!"
tar -xf arduino-1.8.13-linuxaarch64.tar.xz || error "failed to extract with tar!"
arduino-1.8.13/install.sh || error "failed to run install as $USER user!"
sudo arduino-1.8.13/install.sh || error "failed run install as root user!"
tar -xf $(pwd)/$VERSION-linuxaarch64.tar.xz || error "failed to extract with tar!"
$(pwd)/$VERSION/install.sh || error "failed to run install as $USER user!"
sudo $(pwd)/$VERSION/install.sh || error "failed run install as root user!"
rm -f $HOME/Desktop/arduino-arduinoide.desktop arduino-1.8.13-linuxaarch64.tar.xz
rm -f $HOME/Desktop/arduino-arduinoide.desktop $(pwd)/$VERSION-linuxaarch64.tar.xz
exit 0

@ -7,9 +7,11 @@ function error {
exit 1
}
VERSION=arduino-1.8.15
cd ~/.local/share
arduino-1.8.13/uninstall.sh || error "Failed to run uninstall.sh as $USER user"
sudo arduino-1.8.13/uninstall.sh || error "Failed to run uninstall.sh as root user"
rm -rf arduino-1.8.13 || error "Failed to remove arduino-1.8.13 folder"
$VERSION/uninstall.sh || error "Failed to run uninstall.sh as $USER user"
sudo $VERSION/uninstall.sh || error "Failed to run uninstall.sh as root user"
rm -rf $VERSION || error "Failed to remove arduino-1.8.13 folder"

@ -0,0 +1,3 @@
All contributer in github page
added to pi-apps by Painadath
samuelpainadath@gmail.com

@ -0,0 +1 @@
Immerse into a decisive battle against tons of cunning foes, face the terrifying bosses and protect your homeland throughout 15 diverse levels of the game. The hardcore gameplay of AstroMenace, packed with pure non-stop action, will become a full scale test for your basic instinct of survival.

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.2 KiB

@ -0,0 +1,35 @@
#!/bin/bash
DIRECTORY="$(dirname "$(dirname "$( cd "$(dirname "$0")" >/dev/null 2>&1 ; pwd -P )")")"
function error {
echo -e "\\e[91m$1\\e[39m"
exit 1
}
sudo apt-get -y install g++ cmake make ninja-build libsdl2-dev libogg-dev libvorbis-dev libopenal-dev libalut-dev libfreetype6-dev || error 'Failed to install dependencies'
#download
rm -rf master.zip astromenace-master/
wget https://github.com/viewizard/astromenace/archive/refs/heads/master.zip || error 'Failed to download zip!'
unzip master.zip || error 'Failed to unzip'
rm -f master.zip
#build
cd astromenace-master/
cmake . || error 'Failed to run cmake'
c=nproc
make || error 'Failed to run make'
#menu button
echo "[Desktop Entry]
Version=1.1
Type=Application
Name=AstroMenace
Comment=Hardcore 3D space scroll-shooter with spaceship upgrade possibilities.
Icon=$HOME/astromenace-master/share/astromenace_128.png
Exec=$HOME/astromenace-master/astromenace
Categories=Game;
Terminal=false
StartupNotify=true" > ~/.local/share/applications/astromenace.desktop

@ -0,0 +1,14 @@
#!/bin/bash
DIRECTORY="$(dirname "$(dirname "$( cd "$(dirname "$0")" >/dev/null 2>&1 ; pwd -P )")")"
function error {
echo -e "\\e[91m$1\\e[39m"
exit 1
}
"${DIRECTORY}/purge-installed" "$(dirname "$0")" || exit 1
rm -rf astromenace-master/
rm -f ~/.local/share/applications/astromenace.desktop

@ -0,0 +1 @@
https://github.com/viewizard/astromenace

@ -0,0 +1 @@
Botspot made, Botspot added.

@ -0,0 +1,9 @@
Simple utility to make programs run on boot. The sky's the limit.
People use this to:
- Launch a website automatically, on boot.
- Start a backup.
- Launch your favorite apps on boot so they are ready to use sooner.
- See what other apps have added autostart entries, and customize/disable them.
To run: Menu -> Accessories -> AutoStar
To run in terminal: ~/autostar/main.sh

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.2 KiB

@ -0,0 +1,19 @@
#!/bin/bash
DIRECTORY="$(dirname "$(dirname "$( cd "$(dirname "$0")" >/dev/null 2>&1 ; pwd -P )")")"
function error {
echo -e "\\e[91m$1\\e[39m"
exit 1
}
# Get dependencies
"${DIRECTORY}/pkg-install" "yad" "$(dirname "$0")" || exit 1
rm -rf ~/autostar || error "Failed to first remove autostar folder from $HOME!"
echo "Downloading autostar..."
git clone https://github.com/Botspot/autostar || error "Failed to clone AutoStar repository!"
echo "Running AutoStar setup script..."
~/autostar/main.sh setup || error "AutoStar setup script failed!"

@ -0,0 +1,14 @@
#!/bin/bash
DIRECTORY="$(dirname "$(dirname "$( cd "$(dirname "$0")" >/dev/null 2>&1 ; pwd -P )")")"
function error {
echo -e "\\e[91m$1\\e[39m"
exit 1
}
#if your app installs any packages, keep this command here so those packages will be removed.
"${DIRECTORY}/purge-installed" "$(dirname "$0")" || exit 1
rm -rf ~/autostar ~/.local/share/applications/autostar.desktop

@ -0,0 +1 @@
https://github.com/Botspot/cloudbuddy

@ -7,10 +7,10 @@ function error {
exit 1
}
rm -f ./etcher*armv7l.deb
rm -f ./etcher.deb
wget https://github.com/Itai-Nelken/Etcher-arm-32-64/releases/download/v1.5.116/balena-etcher-electron_1.5.116+37769efb_armv7l.deb -O ~/etcher-v1.5.116_armv7l.deb || error "Failed to download!"
wget https://github.com/Itai-Nelken/Etcher-arm-32-64/releases/download/v1.5.121/balena-etcher-electron_1.5.121+8b3f3710_armv7l.deb -O etcher.deb || error "Failed to download!"
sudo apt install -fy ~/etcher-v1.5.116_armv7l.deb || error "failed to install deb file!"
rm -f ~/etcher-v1.5.116_armv7l.deb
sudo apt install -fy ./etcher.deb || error "failed to install deb file!"
rm -f etcher.deb
exit 0

@ -9,11 +9,11 @@ function error {
exit 1
}
rm -f ~/etcher*arm64.deb
rm -f ~/etcher.deb
wget https://github.com/Itai-Nelken/Etcher-arm-32-64/releases/download/v1.5.116/balena-etcher-electron_1.5.116+37769efb_arm64.deb -O ~/etcher-v1.5.116_arm64.deb || error "Failed to download!"
wget https://github.com/Itai-Nelken/Etcher-arm-32-64/releases/download/v1.5.121/balena-etcher-electron_1.5.121+8b3f3710_arm64.deb -O ~/etcher.deb || error "Failed to download!"
sudo apt install -fy ~/etcher-v1.5.116_arm64.deb || error "failed to install deb file!"
rm -f ~/etcher-v1.5.116_arm64.deb
sudo apt install -fy ~/etcher.deb || error "failed to install deb file!"
rm -f ~/etcher.deb
exit 0

@ -0,0 +1 @@
Botspot made the app's install scripts

@ -0,0 +1,5 @@
Create python programs using drag-n-drop blocks
A visual programming editor app for Raspberry Pi, built on Google Blockly, made for RPi users or kids to learn coding.
To run: Menu -> Programming -> BlockPi
To run in a terminal: /opt/BlockPi/blockpi

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

@ -0,0 +1,15 @@
#!/bin/bash
DIRECTORY="$(dirname "$(dirname "$( cd "$(dirname "$0")" >/dev/null 2>&1 ; pwd -P )")")"
function error {
echo -e "\\e[91m$1\\e[39m"
exit 1
}
wget -O ~/blockpi.deb https://github.com/alienzhangyw/BlockPi/releases/download/v1.2.0/blockpi_1.2.0_armv7l.deb || error 'Failed to download deb file!'
# Get dependencies
sudo apt install -fy ~/blockpi.deb || error "Failed to install blockpi.deb"
rm -f ~/blockpi.deb

@ -0,0 +1,15 @@
#!/bin/bash
DIRECTORY="$(dirname "$(dirname "$( cd "$(dirname "$0")" >/dev/null 2>&1 ; pwd -P )")")"
function error {
echo -e "\\e[91m$1\\e[39m"
exit 1
}
wget -O ~/blockpi.deb https://github.com/alienzhangyw/BlockPi/releases/download/v1.2.0/blockpi_1.2.0_arm64.deb || error 'Failed to download deb file!'
# Get dependencies
sudo apt install -fy ~/blockpi.deb || error "Failed to install blockpi.deb"
rm -f ~/blockpi.deb

@ -0,0 +1,11 @@
#!/bin/bash
DIRECTORY="$(dirname "$(dirname "$( cd "$(dirname "$0")" >/dev/null 2>&1 ; pwd -P )")")"
function error {
echo -e "\\e[91m$1\\e[39m"
exit 1
}
sudo apt purge -y blockpi

@ -0,0 +1 @@
https://github.com/alienzhangyw/BlockPi

@ -0,0 +1,2 @@
Install code made by Raspberry Pi News on Youtube
Original app made by kuromi: https://github.com/kuroni/bongocat-osu

@ -0,0 +1,7 @@
If you want to make a video but don't want to show your face, why not use this animated cat program?
This app displays a cat. It can type on the keyboard or move the mouse. It mirrors your mouse movements.
Default keyboard shortcuts: Z and X to tap on the keyboard, C to wear sunglasses, and V to wave.
Go here for configuration options: https://github.com/kuroni/bongocat-osu/wiki/Settings
NOTE: The app files are stored in ~/bongocam/

Binary file not shown.

After

Width:  |  Height:  |  Size: 991 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.6 KiB

@ -0,0 +1,33 @@
#!/bin/bash
DIRECTORY="$(dirname "$(dirname "$( cd "$(dirname "$0")" >/dev/null 2>&1 ; pwd -P )")")"
function error {
echo -e "\\e[91m$1\\e[39m"
exit 1
}
# Get dependencies
"${DIRECTORY}/pkg-install" "libsfml-dev libsdl2-dev libxdo-dev" "$(dirname "$0")" || exit 1
#Download
rm -rf ~/bongocat-armv7l-* ~/bongocam
wget -O ~/bongocat.zip https://github.com/mobilegmYT/bongocat-osu/releases/download/1.5.3/bongocat-armv7l-1.5.3.zip
#Install
unzip ~/bongocat.zip
rm ~/bongocat.zip
mv ~/bongocat-armv7l-* ~/bongocam
chmod +x ~/bongocam/bongo
#Desktop shortcut
echo "[Desktop Entry]
Name=Bongo Cam
Comment=Cute bongo cat app
Icon=$(dirname "$0")/icon-64.png
Exec=$HOME/bongocam/bongo
Path=$HOME/bongocam/
Type=Application
Encoding=UTF-8
Terminal=false
Categories=AudioVideo;" > ~/.local/share/applications/bongocam.desktop

@ -0,0 +1,13 @@
#!/bin/bash
DIRECTORY="$(dirname "$(dirname "$( cd "$(dirname "$0")" >/dev/null 2>&1 ; pwd -P )")")"
function error {
echo -e "\\e[91m$1\\e[39m"
exit 1
}
#if your app installs any packages, keep this command here so those packages will be removed.
"${DIRECTORY}/purge-installed" "$(dirname "$0")" || exit 1
rm -rf ~/bongocam/ ~/.local/share/applications/bongocam.desktop

@ -0,0 +1 @@
https://github.com/kuroni/bongocat-osu

@ -0,0 +1,2 @@
ptitseb for creating box64
Tejas Singh YT for the scripts(Checkout my YT channel :)

@ -0,0 +1,5 @@
Easily emulate x86_64 linux apps on Raspberry Pi.
Box64 lets you run x86_64 Linux programs (such as games) on non-x86_64 Linux systems, like ARM (host system needs to be 64bit little-endian).
Because Box64 uses the native versions of some "system" libraries, like libc, libm, SDL, and OpenGL, it's easy to integrate and use with most applications, and performance can be surprisingly high in many cases.

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

@ -0,0 +1,18 @@
#!/bin/bash
DIRECTORY="$(dirname "$(dirname "$( cd "$(dirname "$0")" >/dev/null 2>&1 ; pwd -P )")")"
function error {
echo -e "\\e[91m$1\\e[39m"
exit 1
}
"${DIRECTORY}/pkg-install" "cmake make python3 gcc" "$(dirname "$0")" || exit 1
rm -rf ~/box64
git clone https://github.com/ptitSeb/box64 || error 'Failed to clone box64 repository!'
cd box64 || error 'Failed to change directory'
mkdir build; cd build; cmake .. -DRPI4ARM64=1 -DCMAKE_BUILD_TYPE=RelWithDebInfo || error 'Failed to run cmake in "build" directory'
make -j8 || error 'Failed to compile'
sudo make install || error 'Failed to run "sudo make install"'
sudo systemctl restart systemd-binfmt || error "Failed to restart systemd-binfmt"

@ -0,0 +1,19 @@
#!/bin/bash
DIRECTORY="$(dirname "$(dirname "$( cd "$(dirname "$0")" >/dev/null 2>&1 ; pwd -P )")")"
function error {
echo -e "\\e[91m$1\\e[39m"
exit 1
}
if [ ! -e ~/box64 ];then
echo "The $HOME/box64 folder does not exist. Nothing to do!"
exit 0
fi
cd ~/box64/build || error "Failed to enter ~/box64/build!"
sudo make uninstall || error "Failed to uninstall box64!"
rm -rf ~/box64 || error "Failed to delete the $HOME/box64 directory!"

@ -0,0 +1 @@
https://github.com/ptitSeb/box64

@ -26,12 +26,14 @@ fi
#install box86 dependencies
CODENAME="$(lsb_release -cs)"
if [[ "${CODENAME}" = "focal" || "${CODENAME}" = "buster" ]]; then
"${DIRECTORY}/pkg-install" "libraspberrypi0:armhf libssh-gcrypt-4:armhf libgssapi-krb5-2:armhf libkrb5-3:armhf libssl1.1:armhf libcups2:armhf libsdl1.2debian:armhf libopusfile0:armhf libc6:armhf libx11-6:armhf libgdk-pixbuf2.0-0:armhf libgtk2.0-0:armhf libstdc++6:armhf libsdl2-2.0-0:armhf mesa-va-drivers:armhf libsdl1.2-dev:armhf libsdl-mixer1.2:armhf libpng16-16:armhf libcal3d12v5:armhf libsdl2-net-2.0-0:armhf libopenal1:armhf libsdl2-image-2.0-0:armhf libvorbis-dev:armhf libcurl4:armhf osspd:armhf pulseaudio:armhf libjpeg62:armhf libudev1:armhf libgl1-mesa-dev:armhf libsnappy1v5:armhf libx11-dev:armhf libsmpeg0:armhf libboost-filesystem1.67.0:armhf libboost-program-options1.67.0:armhf libavcodec58:armhf libavformat58:armhf libswscale5:armhf libmyguiengine3debian1v5:armhf libboost-iostreams1.67.0:armhf libsdl2-mixer-2.0-0:armhf" "$(dirname "$0")" || exit 1
elif [[ "${CODENAME}" = "groovy" ]]; then
"${DIRECTORY}/pkg-install" "libc6:armhf libx11-6:armhf libgdk-pixbuf2.0-0:armhf libgtk2.0-0:armhf libstdc++6:armhf libsdl2-2.0-0:armhf mesa-va-drivers:armhf libsdl1.2-dev:armhf libsdl-mixer1.2:armhf libpng16-16:armhf libcal3d12v5:armhf libsdl2-net-2.0-0:armhf libopenal1:armhf libsdl2-image-2.0-0:armhf libvorbis-dev:armhf libcurl4:armhf osspd:armhf pulseaudio:armhf libjpeg62:armhf libudev1:armhf libgl1-mesa-dev:armhf libsnappy1v5:armhf libx11-dev:armhf libsmpeg0:armhf libboost-filesystem1.71.0:armhf libboost-program-options1.71.0:armhf libavcodec58:armhf libavformat58:armhf libswscale5:armhf libmyguiengine3debian1v5:armhf libboost-iostreams1.71.0:armhf libsdl2-mixer-2.0-0:armhf" "$(dirname "$0")" || exit 1
if [[ "${CODENAME}" == "focal" ]]; then
"${DIRECTORY}/pkg-install" "libraspberrypi0:armhf libssh-gcrypt-4:armhf libgssapi-krb5-2:armhf libkrb5-3:armhf libssl1.1:armhf libcups2:armhf libsdl1.2debian:armhf libopusfile0:armhf libc6:armhf libx11-6:armhf libgdk-pixbuf2.0-0:armhf libgtk2.0-0:armhf libstdc++6:armhf libsdl2-2.0-0:armhf mesa-va-drivers:armhf libsdl1.2-dev:armhf libsdl-mixer1.2:armhf libpng16-16:armhf libcal3d12v5:armhf libsdl2-net-2.0-0:armhf libopenal1:armhf libsdl2-image-2.0-0:armhf libvorbis-dev:armhf libcurl4:armhf osspd:armhf pulseaudio libjpeg62:armhf libudev1:armhf libgl1-mesa-dev:armhf libsnappy1v5:armhf libx11-dev:armhf libsmpeg0:armhf libboost-filesystem1.67.0:armhf libboost-program-options1.67.0:armhf libavcodec58:armhf libavformat58:armhf libswscale5:armhf libmyguiengine3debian1v5:armhf libboost-iostreams1.67.0:armhf libsdl2-mixer-2.0-0:armhf" "$(dirname "$0")" || exit 1
elif [[ "${CODENAME}" == "groovy" ]]; then
"${DIRECTORY}/pkg-install" "libraspberrypi0:armhf libssh-gcrypt-4:armhf libgssapi-krb5-2:armhf libkrb5-3:armhf libssl1.1:armhf libcups2:armhf libsdl1.2debian:armhf libopusfile0:armhf libc6:armhf libx11-6:armhf libgdk-pixbuf2.0-0:armhf libgtk2.0-0:armhf libstdc++6:armhf libsdl2-2.0-0:armhf mesa-va-drivers:armhf libsdl1.2-dev:armhf libsdl-mixer1.2:armhf libpng16-16:armhf libcal3d12v5:armhf libsdl2-net-2.0-0:armhf libopenal1:armhf libsdl2-image-2.0-0:armhf libvorbis-dev:armhf libcurl4:armhf osspd:armhf pulseaudio libjpeg62:armhf libudev1:armhf libgl1-mesa-dev:armhf libsnappy1v5:armhf libx11-dev:armhf libsmpeg0:armhf libboost-filesystem1.71.0:armhf libboost-program-options1.71.0:armhf libavcodec58:armhf libavformat58:armhf libswscale5:armhf libmyguiengine3debian1v5:armhf libboost-iostreams1.71.0:armhf libsdl2-mixer-2.0-0:armhf" "$(dirname "$0")" || exit 1
elif [[ "${CODENAME}" == "hirsute" ]]; then
"${DIRECTORY}/pkg-install" "libssh-gcrypt-4:armhf libgssapi-krb5-2:armhf libkrb5-3:armhf libssl1.1:armhf libcups2:armhf libsdl1.2debian:armhf libopusfile0:armhf libc6:armhf libx11-6:armhf libgdk-pixbuf2.0-0:armhf libgtk2.0-0:armhf libstdc++6:armhf libsdl2-2.0-0:armhf mesa-va-drivers:armhf libsdl1.2-dev:armhf libsdl-mixer1.2:armhf libpng16-16:armhf libcal3d12v5:armhf libsdl2-net-2.0-0:armhf libopenal1:armhf libsdl2-image-2.0-0:armhf libvorbis-dev:armhf libcurl4:armhf osspd:armhf pulseaudio libjpeg62:armhf libudev1:armhf libgl1-mesa-dev:armhf libsnappy1v5:armhf libx11-dev:armhf libsmpeg0:armhf libboost-filesystem1.74.0:armhf libboost-program-options1.74.0:armhf libavcodec58:armhf libavformat58:armhf libswscale5:armhf libmyguiengine3debian1v5:armhf libboost-iostreams1.74.0:armhf libsdl2-mixer-2.0-0:armhf" "$(dirname "$0")" || exit 1
else
error "this script can't run on your OS! it HAS to be Debian buster or Ubuntu 20.04 or 20.10"
error "this script can't run on your OS! It HAS to be Ubuntu 20.04, 20.10 or 21.04"
fi
sudo rm /etc/apt/sources.list.d/box86.list &>/dev/null
@ -42,4 +44,4 @@ wget -qO- https://itai-nelken.github.io/weekly-box86-debs/debian/KEY.gpg | sudo
echo "running 'sudo apt update'..."
sudo apt update || error "Failed to run sudo apt update"
echo "installing box86..."
sudo apt install box86 -y || error "Failed to install the box86 package"
sudo apt install box86 -y || error "Failed to install the box86 package"

@ -1,5 +1,7 @@
#!/bin/bash
DIRECTORY="$(dirname "$(dirname "$( cd "$(dirname "$0")" >/dev/null 2>&1 ; pwd -P )")")"
function error {
echo -e "\\e[91m$1\\e[39m"
exit 1
@ -13,8 +15,11 @@ function check-armhf() {
ARMHF="$(dpkg --print-foreign-architectures | grep "armhf")"
}
echo "uninstalling box86..."
sudo apt purge box86 -y || error "Failed to uninstall box86!"
if command -v box86 >/dev/null;then
echo "uninstalling box86..."
sudo apt purge box86 -y || error "Failed to uninstall box86!"
fi
echo "removing box86 repo..."
sudo rm -f /etc/apt/sources.list.d/box86.list || error "Failed to remove repo!"
echo "removing box86 repo key..."
@ -26,11 +31,10 @@ if [ ! -z "$(file "$(readlink -f "/sbin/init")" | grep 64)" ]; then
"${DIRECTORY}/purge-installed" "$(dirname "$0")" || exit 1
sudo dpkg --remove-architecture armhf || warning "Failed to remove armhf architecture.\nMost likely, you already had other armhf packages installed prior to this."
sudo dpkg --remove-architecture armhf || warning "armhf architecture should be removed by now, but it isn't!"
check-armhf
if [[ "$ARMHF" == *"armhf"* ]]; then
warning "armhf architecture should be removed by now, but it isn't!"
warning "You probably have some other programs using it, remove it by running 'sudo dpkg --remove-architecture armhf'."
warning "You probably have some other programs using it, remove it by running 'sudo dpkg --remove-architecture armhf'."
fi
elif [ ! -z "$(file "$(readlink -f "/sbin/init")" | grep 32)" ]; then
@ -41,4 +45,4 @@ else
fi
echo "running 'sudo apt update'..."
sudo apt update
sudo apt update

@ -11,7 +11,7 @@ function error {
"${DIRECTORY}/pkg-install" "firefox-esr" "$(dirname "$0")" || exit 1
wget https://github.com/browsh-org/browsh/releases/download/v1.6.4/browsh_1.6.4_linux_armv7.deb || error 'Failed to download browsh!'
sudo dpkg -i browsh_1.6.4_linux_armv7.deb || error 'Failed to install browsh!'
sudo apt -yf install ./browsh_1.6.4_linux_armv7.deb || error 'Failed to install browsh!'
rm browsh_1.6.4_linux_armv7.deb
echo "[Desktop Entry]
Version=1.1

@ -11,7 +11,7 @@ function error {
"${DIRECTORY}/pkg-install" "firefox-esr" "$(dirname "$0")" || exit 1
wget https://github.com/browsh-org/browsh/releases/download/v1.6.4/browsh_1.6.4_linux_arm64.deb || error 'Failed to download browsh!'
sudo dpkg -i browsh_1.6.4_linux_arm64.deb || error 'Failed to install browsh!'
sudo apt -yf install ./browsh_1.6.4_linux_arm64.deb || error 'Failed to install browsh!'
rm browsh_1.6.4_linux_arm64.deb
echo "[Desktop Entry]
Version=1.1

@ -7,8 +7,11 @@ function error {
exit 1
}
sudo apt purge -y browsh || error 'Failed to remove browsh!'
sudo rm ~/.local/share/applications/browsh.desktop
if command -v browsh >/dev/null ;then
sudo apt purge -y browsh || error 'Failed to remove browsh!'
fi
sudo rm -f ~/.local/share/applications/browsh.desktop
#if your app installs any packages, keep this command here so those packages will be removed.
"${DIRECTORY}/purge-installed" "$(dirname "$0")" || exit 1

@ -0,0 +1,3 @@
Chiaki software implementation by Florian Märkl: https://github.com/thestr4ng3r
Raspberry Pi fork implementation by Blueroom VR: https://github.com/Fredrum
Added to Pi-Apps by Markieautarkie: https://github.com/Markieautarkie

@ -0,0 +1,19 @@
Chiaki is a free and open source software client which enables PlayStation 4/5 remote play on the Raspberry Pi.
Chiaki wiki: https://git.sr.ht/~thestr4ng3r/chiaki
Pi fork wiki: https://github.com/Fredrum/chiaki/wiki/Chiaki-for-the-Raspberry-Pi
To run: Menu -> Games -> Chiaki
To run in a terminal: Chiaki/build/gui/chiaki
----- Usage -----
Once Chiaki is running, you can enter the settings menu (top right) to configure general/stream settings to your liking. Note that stream quality options are limited depending on your console. To connect and use a controller with Chiaki, please refer to the Pi fork wiki.
In most cases, Chiaki will automatically detect your console if it's turned on. Otherwise, you can add it manually by pressing the "+" icon (top right) and entering your console's IP address.
To finalize the registration, two more parameters need to be set.
PSN AccountID: In a terminal, enter "python3 Chiaki/psn-account-id.py" and follow the instructions.
Registration PIN:
On a PS4, go to: Settings -> Remote Play -> Add Device;
On a PS5, go to: Settings -> System -> Remote Play -> Link Device.
You can now double-click your console in Chiaki's main window to start remote play!

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

@ -0,0 +1,40 @@
#!/bin/bash
DIRECTORY="$(dirname "$(dirname "$( cd "$(dirname "$0")" >/dev/null 2>&1 ; pwd -P )")")"
function error {
echo -e "\\e[91m$1\\e[39m"
exit 1
}
# install dependencies
"${DIRECTORY}/pkg-install" "cmake python3-protobuf protobuf-compiler libavcodec-dev libopus-dev libsdl2-dev libssl-dev qt5-default qtmultimedia5-dev libqt5svg5-dev libqt5multimedia5-plugins libqt5opengl5-dev" "$(dirname "$0")" || exit 1
# install Chiaki
git clone --single-branch --branch rpi01 https://github.com/Fredrum/chiaki.git Chiaki || error "failed to clone the Chiaki repository!"
cd Chiaki || error "failed to enter the Chiaki folder!"
git submodule update --init || error "failed to update the Chiaki submodule!"
# build the application
mkdir build || error "failed to create build folder!"
cd build || error "failed to enter the build folder!"
cmake .. -DCMAKE_BUILD_TYPE=Release || error "failed to initialize cmake configurations!"
make || error "failed to build the Chiaki application!"
# create desktop entry
echo "[Desktop Entry]
Type=Application
Name=Chiaki
GenericName=PlayStation Streaming Software
Comment=Chiaki is a free and open source software client for PlayStation 4/5 remote play functionality
Icon=$(dirname $0)/icon-64.png
Exec=$HOME/Chiaki/build/gui/chiaki
Terminal=false
Categories=Game;RemoteAccess;Amusement;
Keywords=Remote;Streaming;PS4;PS5;Games;
StartupNotify=true" > $HOME/.local/share/applications/chiaki.desktop
# download PSN AccountID script
wget https://git.sr.ht/~thestr4ng3r/chiaki/blob/master/scripts/psn-account-id.py -P $HOME/Chiaki || error "failed to download PSN AccountID script!"
exit 0

@ -0,0 +1,17 @@
#!/bin/bash
DIRECTORY="$(dirname "$(dirname "$( cd "$(dirname "$0")" >/dev/null 2>&1 ; pwd -P )")")"
function error {
echo -e "\\e[91m$1\\e[39m"
exit 1
}
# remove dependencies
"${DIRECTORY}/purge-installed" "$(dirname "$0")" || exit 1
# remove Chiaki folder and desktop entry
rm -rf $HOME/Chiaki || error "failed to delete Chiaki folder!"
rm -f $HOME/.local/share/applications/chiaki.desktop || error "failed to delete Chiaki desktop entry!"
exit 0

@ -0,0 +1 @@
https://github.com/Fredrum/chiaki/wiki/Chiaki-for-the-Raspberry-Pi

@ -1,9 +1,12 @@
Widevine DRM support for chromium-browser v84
This adds the ChromeOS DRM video decoding library to Chromium, and sets a ChromeOS user-agent. Websites you browse will think your Pi is a Chromebook!
Widevine DRM support for any version of chromium-browser.
This adds ChromeOS's Widevine video decoding library to Chromium, and creates a second menu button with a ChromeOS user-agent. All websites will think your Pi is a Chromebook!
Unlike Ventz's Chromium Media Edition, or even the official libwidevinecdm0 package, this app is unique to support all versions of Chromium, before version 84 and after version 84. Feel free to downgrade your browser for better video performance! (Using the "Downgrade Chromium" app)
To run: Menu -> Internet -> Chromium Widevine.
To test DRM: https://bitmovin.com/demos/drm
For normal browsing, it's advisable to use the standard Chromium launcher.
This works on these websites:
This is known to work on these websites:
• Netflix
• Hulu
• Amazon Prime

@ -11,13 +11,13 @@ cd $HOME
rm -rf ~/chromium-v84-widevine &>/dev/null
git clone https://github.com/Botspot/chromium-v84-widevine || error 'Failed to clone example.com repository!'
git clone https://github.com/Botspot/chromium-v84-widevine || error 'Failed to clone chromium-v84-widevine repository!'
echo "[Desktop Entry]
Version=1.0
Name=Chromium Widevine
GenericName=Web Browser
Comment=Play Netflix & Spotify on Chromium v84
Comment=The last several versions of RPi Chromium already use the Chromebook user-agent, so this menu button isn't necessary. But the icon looks too awesome to get rid of! And if you're using a pre-v84 Chromium version, this menu button may still be necessary.
Exec=chromium-browser %U --user-agent="\""Mozilla/5.0 (X11; CrOS armv7l 12371.89.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.120 Safari/537.36"\"" %U
Terminal=false
X-MultipleArgs=false
@ -33,12 +33,10 @@ rm -rf ~/chromium-v84-widevine
mkdir -p ~/.config/chromium-browser/WidevineCdm
echo "{"\""Path"\"":"\""/opt/WidevineCdm"\""}" 1> ~/.config/chromium-browser/WidevineCdm/latest-component-updated-widevine-cdm
#create old libwidevinecdm.so for older Chromium versions
#see https://github.com/Botspot/pi-apps/commit/803a7d3cc14d24ddc651af94927823aac1331e7e#diff-d56f6359d240f69e4164425b599d08869574fc013b9e5727951048914db12c5b
sudo wget -O /usr/lib/chromium-browser/libwidevinecdm.so https://raw.githubusercontent.com/Botspot/pi-apps/f5b6c38602e5a8b075dc14d4b68ce02a77f5e745/apps/Chromium%20Media%20Edition/libwidevinecdm.so
if [ ! -z "$(ps aux | grep /usr/lib/chromium-browser | grep -v grep)" ];then
echo -e "\e[97mFor Chromium Widevine to work, you need to exit all instances of Chromium.\e[39m"
sleep 1
echo -en "\e[97m\nWaiting until Chromium is closed\e[39m"
while [ ! -z "$(ps aux | grep /usr/lib/chromium-browser | grep -v grep)" ];do
sleep 1
echo -n '.'
done
fi

@ -7,7 +7,7 @@ function error {
exit 1
}
sudo rm -rf /opt/WidevineCdm
sudo rm -rf /opt/WidevineCdm /usr/lib/chromium-browser/libwidevinecdm.so
rm -rf ~/chromium-v84-widevine ~/.local/share/applications/widevine-chromium.desktop ~/.config/chromium-browser/WidevineCdm/latest-component-updated-widevine-cdm &>/dev/null
exit 0

@ -10,11 +10,11 @@ function error {
}
# Get package clamav
"${DIRECTORY}/pkg-install" "clamav clamtk" "$(dirname "$0")" || exit 1
"${DIRECTORY}/pkg-install" "clamav" "$(dirname "$0")" || exit 1
wget https://bitbucket.org/davem_/clamtk-gtk3/downloads/clamtk_6.06-1_all.deb
sudo apt install --fix-broken ./clamtk_6.06-1_all.deb -y
rm clamtk_6.06-1_all.deb
wget https://github.com/dave-theunsub/clamtk/releases/download/v6.13/clamtk_6.13-1_all.deb
sudo apt install --fix-broken ./clamtk_*.deb -y
rm clamtk_*.deb
#if thunar file manager installed then also install clamtk thunar extension
if [ -f /usr/bin/thunar ];then

@ -0,0 +1 @@
Botspot made, Botspot added.

@ -0,0 +1,5 @@
CloudBuddy is the ultimate wizard for cloud storage. Google Drive, Onedrive, Dropbox, and many more.
Botspot made this gui frontend for the popular rclone tool to connect to your cloud drives, download from them, upload to them, mount them to your file manager, and more. In addition, CloudBuddy features an interactive file browser to easily generate shareable links and to perform various server-side operations.
To run: Menu -> Internet -> CloudBuddy
To run in terminal: ~/cloudbuddy/main.sh

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.6 KiB

@ -0,0 +1,19 @@
#!/bin/bash
DIRECTORY="$(dirname "$(dirname "$( cd "$(dirname "$0")" >/dev/null 2>&1 ; pwd -P )")")"
function error {
echo -e "\\e[91m$1\\e[39m"
exit 1
}
# Get dependencies
"${DIRECTORY}/pkg-install" "yad xclip expect" "$(dirname "$0")" || exit 1
rm -rf ~/cloudbuddy || error "Failed to first remove cloudbuddy folder from $HOME!"
echo "Downloading cloudbuddy..."
git clone https://github.com/Botspot/cloudbuddy || error "Failed to clone CloudBuddy repository!"
echo "Running CloudBuddy setup script..."
~/cloudbuddy/main.sh setup || error "CloudBuddy setup script failed!"

@ -0,0 +1,14 @@
#!/bin/bash
DIRECTORY="$(dirname "$(dirname "$( cd "$(dirname "$0")" >/dev/null 2>&1 ; pwd -P )")")"
function error {
echo -e "\\e[91m$1\\e[39m"
exit 1
}
#if your app installs any packages, keep this command here so those packages will be removed.
"${DIRECTORY}/purge-installed" "$(dirname "$0")" || exit 1
rm -rf ~/cloudbuddy ~/.local/share/applications/cloudbuddy.desktop

@ -0,0 +1 @@
https://github.com/Botspot/cloudbuddy

@ -0,0 +1,3 @@
phoenixbyrd for the files
chunky-milk for the scripts
Botspot for coloring the theme

@ -0,0 +1,2 @@
Animated gauges and graphs of your system, on your desktop.
Displays system uptime, core-specific CPU usage, CPU speed, CPU temperature, top 5 processes by CPU usage, storage usage for boot and root partitions, RAM usage, SWAP usage, top 5 processes by RAM usage, and describes the current Linux environment.

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.8 KiB

@ -0,0 +1,42 @@
#!/bin/bash
DIRECTORY="$(dirname "$(dirname "$( cd "$(dirname "$0")" >/dev/null 2>&1 ; pwd -P )")")"
function error {
echo -e "\\e[91m$1\\e[39m"
exit 1
}
if [ -f "$HOME/.conkyrc" ]; then
error "Another Conky theme is already installed! Uninstall the original app (Or delete $HOME/.conkyrc), then try again."
fi
# Get dependencies
"${DIRECTORY}/pkg-install" "conky-all lua50" "$(dirname "$0")" || exit 1
#get conkyrc
wget -O ~/.conkyrc https://raw.githubusercontent.com/Botspot/rpi_conky/master/conky_rings/.conkyrc || error "Failed to get .conkyrc!"
#get fonts to ~/.local/share/fonts
mkdir -p ~/.local/share/fonts && cd ~/.local/share/fonts || error "Failed to create and enter $HOME/.local/share/fonts folder!"
wget https://github.com/Botspot/rpi_conky/raw/master/conky_rings/fonts.tar.gz || error "Failed to download the required fonts!"
tar -xvf fonts.tar.gz || error "Failed to extract the required fonts!"
rm -f fonts.tar.gz || error "Failed to remove fonts archive!"
#remove unnecessary file extracted from the tar.gz
rm -f .uuid || error "Failed to delete unnecessary .uuid file!"
#get rings.lua
wget -O ~/.conky_rings.lua https://raw.githubusercontent.com/Botspot/rpi_conky/master/conky_rings/.conky_rings.lua || error "Failed to download conky-rings.lua!"
#run conky this time
conky -q -d -p 3 &
#make autostart entry to run it next time
mkdir -p ~/.config/autostart
echo "[Desktop Entry]
Name=Conky
Type=Application
Exec=bash -c 'sleep 5;conky -q -d -p 3'
Terminal=false
Comment=system monitoring tool.
Categories=Utility;" > ~/.config/autostart/conky.desktop || error "Failed to create desktop entry!"

@ -0,0 +1,16 @@
#!/bin/bash
DIRECTORY="$(dirname "$(dirname "$( cd "$(dirname "$0")" >/dev/null 2>&1 ; pwd -P )")")"
function error {
echo -e "\\e[91m$1\\e[39m"
exit 1
}
"${DIRECTORY}/purge-installed" "$(dirname "$0")" || exit 1
rm -f ~/.config/autostart/conky.desktop ~/.conky-rings.lua ~/.conkyrc || error "Failed to remove autostart file or .conkyrc or .conky-rings.lua!"
killall conky 2>/dev/null
exit 0

@ -0,0 +1 @@
https://github.com/Botspot/rpi_conky/tree/master/conky_rings

@ -7,10 +7,10 @@ function error {
exit 1
}
#use the error function often!
#If a certain command is necessary for installation to continue, then add this to the end of it:
# || error 'reason'
#example below:
if [ -f "$HOME/.conkyrc" ]; then
error "Another Conky theme is already installed! Uninstall the original app (Or delete $HOME/.conkyrc), then try again."
fi
wget -O ~/.conkyrc https://raw.githubusercontent.com/Botspot/rpi_conky/master/conkyrc || error 'Failed to download conkyrc!!'
#change eth0 to wlan0 in conky config if user is currently using WiFi
@ -23,16 +23,17 @@ fi
# Get dependencies
"${DIRECTORY}/pkg-install" "conky" "$(dirname "$0")" || exit 1
#run conky this time
conky &
#make autostart entry to run it next time
mkdir -p ~/.config/autostart
echo -n '' > ~/.config/autostart/conky.desktop
echo "[Desktop Entry]
Name=Conky
Type=Application
Exec=bash -c 'sleep 5;conky'
Exec=bash -c 'sleep 5;conky -q -d'
Terminal=false
Icon=${DIRECTORY}/apps/Conky/icon-64.png
Comment=system monitoring tool.
Categories=Utility;" > ~/.config/autostart/conky.desktop
#run conky
conky &

@ -7,9 +7,10 @@ function error {
exit 1
}
#if your app installs any packages, keep this command here so those packages will be removed.
"${DIRECTORY}/purge-installed" "$(dirname "$0")" || exit 1
rm -f ~/.config/autostart/conky.desktop ~/.conkyrc || error "Failed to remove autostart file or .conkyrc!"
killall conky 2>/dev/null
exit 0

@ -1,3 +1,6 @@
Simulates an old CRT terminal.
This is fully hardware accelerated as long as your Fake KMS GPU driver is enabled.
Yes, it's a usable pi@raspberrypi terminal emulator.
To run: Menu -> System Tools -> Cool Retro Term
To run in terminal: ~/cool-retro-term/cool-retro-term

@ -7,15 +7,21 @@ function error {
exit 1
}
wget -O ~/Cura.AppImage https://github.com/smartavionics/Cura/releases/download/20210306/Cura-mb-master-armhf-20210306.AppImage || error "Failed to download!"
wget -O ~/Cura.AppImage https://github.com/smartavionics/Cura/releases/download/20210629/Cura-mb-master-armhf-20210629.AppImage || error "Failed to download!"
chmod +x ~/Cura.AppImage
#get stl-thumb package
rm -f ~/stl-thumb_0.4.0_armhf.deb
wget https://github.com/unlimitedbacon/stl-thumb/releases/download/v0.4.0/stl-thumb_0.4.0_armhf.deb
"${DIRECTORY}/pkg-install" "$HOME/stl-thumb_0.4.0_armhf.deb" "$(dirname "$0")" || exit 1
rm -f ~/stl-thumb_0.4.0_armhf.deb
echo "[Desktop Entry]
Name=Ultimaker Cura
GenericName=3D Printing Software
Comment=Cura converts 3D models into paths for a 3D printer. It prepares your print for maximum accuracy, minimum printing time and good reliability with many extra features that make your print come out great.
Exec=bash -c 'sudo modprobe fuse; ~/Cura.AppImage'
Exec=bash -c 'sudo modprobe fuse; ~/Cura.AppImage '"'\ "%f"'"
Icon=$(dirname $0)/icon-64.png
Terminal=false
Type=Application

@ -7,10 +7,16 @@ function error {
exit 1
}
wget -O ~/Cura.AppImage https://github.com/smartavionics/Cura/releases/download/20210306/Cura-mb-master-aarch64-20210306.AppImage || error "Failed to download!"
wget -O ~/Cura.AppImage https://github.com/smartavionics/Cura/releases/download/20210629/Cura-mb-master-aarch64-20210629.AppImage || error "Failed to download!"
chmod +x ~/Cura.AppImage
#get stl-thumb package
rm -f ~/stl-thumb_0.4.0_arm64.deb
wget https://github.com/unlimitedbacon/stl-thumb/releases/download/v0.4.0/stl-thumb_0.4.0_arm64.deb
"${DIRECTORY}/pkg-install" "$HOME/stl-thumb_0.4.0_arm64.deb" "$(dirname "$0")" || exit 1
rm -f ~/stl-thumb_0.4.0_arm64.deb
echo "[Desktop Entry]
Name=Ultimaker Cura
GenericName=3D Printing Software

@ -6,7 +6,9 @@ function error {
echo -e "\\e[91m$1\\e[39m"
exit 1
}
"${DIRECTORY}/purge-installed" "$(dirname "$0")" || exit 1
rm -f ~/.local/share/applications/cura.desktop
rm -f ~/Cura-mb-master-armhf-20200902.AppImage
rm -rf ~/.cache/cura
#gio trash ~/.config/cura

@ -1,6 +1,5 @@
Nativefier version of Discord for ARM
To run: Menu -> Internet -> Discord.
To run in a terminal: /usr/share/discord-linux-armv7l/discord
You could also run it from the desktop shortcut.
Fast Discord client for ARM that mimics the official Discord client.
To run: Menu -> Internet -> WebCord.
To run in a terminal: webcord
The app runs independent to chromium and can be hidden to the system tray unlike other solutions out there.
Made by SpacingBat3 on Github with care :)

Binary file not shown.

Before

Width:  |  Height:  |  Size: 838 B

After

Width:  |  Height:  |  Size: 881 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.2 KiB

After

Width:  |  Height:  |  Size: 2.3 KiB

@ -7,21 +7,17 @@ function error {
exit 1
}
function download() {
curl -s https://api.github.com/repos/SpacingBat3/electron-discord-webapp/releases/latest \
| grep "browser_download_url.*armhf.deb" \
| cut -d : -f 2,3 \
| tr -d \" \
| wget -qi -
}
version='1.5.0'
#remove electron-discord-webapp if it still exists
if command -v webcord >/dev/null ;then
sudo apt purge webcord || error "failed to first uninstall electron-discord-webapp!"
fi
echo "Downloading Webcord..."
gio trash ~/discord-electron 2> /dev/null
rm -f ~/.local/share/applications/discord.desktop 2> /dev/null
rm -f ~/webcord_${version}_armhf.deb
wget https://github.com/SpacingBat3/WebCord/releases/download/v${version}/webcord_${version}_armhf.deb
sudo apt -fy install ~/webcord_${version}_armhf.deb || error "Failed to install webcord deb!"
echo "downloading discord-electron..."
cd $HOME
#download || error "Failed to download latest release!"
wget https://github.com/SpacingBat3/electron-discord-webapp/releases/download/v1.2.1/electron-discord-webapp_1.2.1_armhf.deb
sudo dpkg -i electron-discord-webapp*armhf.deb || error "Failed to install discord-electron!"
sudo apt -fy install
rm -f electron-discord-webapp*armhf.deb
rm -f ~/webcord_${version}_armhf.deb

@ -7,21 +7,17 @@ function error {
exit 1
}
function download() {
curl -s https://api.github.com/repos/SpacingBat3/electron-discord-webapp/releases/latest \
| grep "browser_download_url.*arm64.deb" \
| cut -d : -f 2,3 \
| tr -d \" \
| wget -qi -
}
version='1.5.0'
#remove electron-discord-webapp if it still exists
if command -v webcord >/dev/null ;then
sudo apt purge webcord || error "failed to first uninstall electron-discord-webapp!"
fi
echo "Downloading Webcord..."
gio trash ~/discord-electron 2> /dev/null
rm -f ~/.local/share/applications/discord.desktop 2> /dev/null
rm -f ~/webcord_${version}_arm64.deb
wget https://github.com/SpacingBat3/WebCord/releases/download/v${version}/webcord_${version}_arm64.deb
sudo apt -fy install ~/webcord_${version}_arm64.deb || error "Failed to install webcord deb!"
echo "downloading discord-electron..."
cd $HOME
#download || error "Failed to download latest release!"
wget https://github.com/SpacingBat3/electron-discord-webapp/releases/download/v1.2.1/electron-discord-webapp_1.2.1_arm64.deb
sudo dpkg -i electron-discord-webapp*arm64.deb || error "Failed to install discord-electron!"
sudo apt -f install
rm -f electron-discord-webapp*arm64.deb
rm -f ~/webcord_${version}_arm64.deb

@ -6,4 +6,4 @@ function error {
echo -e "\\e[91m$1\\e[39m"
exit 1
}
sudo apt purge -y electron-discord-webapp
sudo apt purge -y webcord

@ -1 +1 @@
https://github.com/SpacingBat3/electron-discord-webapp
https://github.com/SpacingBat3/WebCord/

@ -0,0 +1,7 @@
Simple program used to hand-draw png images.
To run: Menu -> Graphics -> Drawing
To run in terminal: drawing
Note: This serves a different purpose than Microsoft Paint. If you want a Paint-style tool, install Kolourpaint:
sudo apt install kolourpaint

Binary file not shown.

After

Width:  |  Height:  |  Size: 924 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

@ -0,0 +1,21 @@
#!/bin/bash
DIRECTORY="$(dirname "$(dirname "$( cd "$(dirname "$0")" >/dev/null 2>&1 ; pwd -P )")")"
function error {
echo -e "\\e[91m$1\\e[39m"
exit 1
}
#ensure not Raspbian Stretch
if [ "$(lsb_release -cs)" == stretch ];then
error "This app cannot be installed on Raspbian Stretch."
fi
#PACKAGES FOUND IN: https://launchpad.net/~cartes/+archive/ubuntu/ppa/+packages
rm -f ~/drawing.deb
wget -O ~/drawing.deb "https://launchpad.net/~cartes/+archive/ubuntu/drawing/+files/drawing_0.8.3-0ubuntu1~hirsute_armhf.deb" || error "Failed to download drawing.deb"
sudo apt install -yf ~/drawing.deb || error "APT failed to install drawing.deb"
rm -f ~/drawing.deb

@ -0,0 +1,16 @@
#!/bin/bash
DIRECTORY="$(dirname "$(dirname "$( cd "$(dirname "$0")" >/dev/null 2>&1 ; pwd -P )")")"
function error {
echo -e "\\e[91m$1\\e[39m"
exit 1
}
#PACKAGES FOUND IN: https://launchpad.net/~cartes/+archive/ubuntu/ppa/+packages
rm -f ~/drawing.deb
wget -O ~/drawing.deb "https://launchpad.net/~cartes/+archive/ubuntu/drawing/+files/drawing_0.8.3-0ubuntu1~hirsute_arm64.deb" || error "Failed to download drawing.deb"
sudo apt install -yf ~/drawing.deb || error "APT failed to install drawing.deb"
rm -f ~/drawing.deb

@ -0,0 +1,9 @@
#!/bin/bash
DIRECTORY="$(dirname "$(dirname "$( cd "$(dirname "$0")" >/dev/null 2>&1 ; pwd -P )")")"
function error {
echo -e "\\e[91m$1\\e[39m"
exit 1
}
sudo apt purge -y drawing || error "apt failed to uninstall the 'drawing' package."

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save