Merge branch 'Botspot:master' into master
@ -1,2 +0,0 @@
|
||||
# These are supported funding model platforms
|
||||
custom: https://paypal.me/josephmarchand
|
@ -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
|
||||
|
Before Width: | Height: | Size: 776 B After Width: | Height: | Size: 6.8 KiB |
Before Width: | Height: | Size: 1.4 KiB After Width: | Height: | Size: 6.6 KiB |
@ -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.
|
After Width: | Height: | Size: 1.6 KiB |
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
|
After Width: | Height: | Size: 1.4 KiB |
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
|
@ -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
|
After Width: | Height: | Size: 1.2 KiB |
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/
|
After Width: | Height: | Size: 991 B |
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.
|
After Width: | Height: | Size: 1.1 KiB |
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
|
@ -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!
|
After Width: | Height: | Size: 1.0 KiB |
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
|
@ -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
|
After Width: | Height: | Size: 1.3 KiB |
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.
|
After Width: | Height: | Size: 1.2 KiB |
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
|
@ -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
|
||||
|
@ -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 :)
|
||||
|
Before Width: | Height: | Size: 838 B After Width: | Height: | Size: 881 B |
Before Width: | Height: | Size: 2.2 KiB After Width: | Height: | Size: 2.3 KiB |
@ -1 +1 @@
|
||||
https://github.com/SpacingBat3/electron-discord-webapp
|
||||
https://github.com/SpacingBat3/WebCord/
|
||||
|
@ -0,0 +1 @@
|
||||
Botspot
|
@ -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
|
After Width: | Height: | Size: 924 B |
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."
|