Files
MicroPythonOS/scripts/run_desktop.sh
T
Kili 5587e457a9 Update run_desktop.sh to fix settings being ignored
Script would not be able to start in dark mode, config.json was backed up but never used. config.json is not backed up anymore, change if this is needed still.
We overwrite the auto_start_app if we launch it with a specific app.
2026-01-20 16:58:01 +01:00

78 lines
2.8 KiB
Bash
Executable File

#!/bin/bash
scriptdir=$(readlink -f "$0")
scriptdir=$(dirname "$scriptdir")
script="$1"
if [ -f "$script" ]; then
script=$(readlink -f "$script")
fi
echo "Usage:"
echo "$0 # with no arguments just starts it up normally"
echo "$0 scriptfile.py # doesn't initialize anything, just runs scriptfile.py directly"
echo "$0 appname # starts the app by appname, for example: com.example.helloworld"
#export SDL_WINDOW_FULLSCREEN=true
export HEAPSIZE=8M # default, same a PSRAM on many ESP32-S3 boards
#export HEAPSIZE=9M # 9MB is not enough for slides, 10MB is okay for 5, 16 for 10, 64 for 100s
#export HEAPSIZE=10M # 9MB is not enough for slides, 10MB is okay for 5, 16 for 10, 64 for 100s
#export HEAPSIZE=11M # 9MB is not enough for slides, 10MB is okay for 5, 16 for 10, 64 for 100s
#export HEAPSIZE=12M # 9MB is not enough for slides, 10MB is okay for 5, 16 for 10, 64 for 100s
#export HEAPSIZE=13M # 9MB is not enough for slides, 10MB is okay for 5, 16 for 10, 64 for 100s
#export HEAPSIZE=14M # 9MB is not enough for slides, 10MB is okay for 5, 16 for 10, 64 for 100s
#export HEAPSIZE=15M # 9MB is not enough for slides, 10MB is okay for 5, 15 ok for all
# 15 works infinite with 8 images
# 12 seems to work fine with all images now, doing only gc.collect()
# 10-11 works infinite with 7 images but as soon as I add the next one (big PNG slide 2) it hangs memory alloc
# Makes semse because the error is:
# MemoryError: memory allocation failed, allocating 2518043 bytes
# So every new slide needs 2.5MB extra RAM!
# Fixed by adding lv.image.cache_drop(None) # This helps a lot!
# Now it works with 10M with infinite slides!
# Now not anymore... let's try increasing it.
#export HEAPSIZE=20M # this is fine for 1024x576
#export HEAPSIZE=15M # fine too
#export HEAPSIZE=32M # for 1280x720 images in the image viewer
#export HEAPSIZE=128M # for 1280x720 images in the image viewer
# print os and set binary
os_name=$(uname -s)
if [ "$os_name" = "Darwin" ]; then
echo "Running on macOS"
binary="$scriptdir"/../lvgl_micropython/build/lvgl_micropy_macOS
else
# other cases can be added here
echo "Running on $os_name"
binary="$scriptdir"/../lvgl_micropython/build/lvgl_micropy_unix
fi
binary=$(readlink -f "$binary")
chmod +x "$binary"
pushd "$scriptdir"/../internal_filesystem/
if [ -f "$script" ]; then
echo "Running script $script"
"$binary" -v -i "$script"
else
echo "Running app $script"
CONFIG_FILE="data/com.micropythonos.settings/config.json"
# Check if config.json exists
if [ -f "$CONFIG_FILE" ]; then
# Update the auto_start_app field using sed
sed -i '' -e 's/"auto_start_app": ".*"/"auto_start_app": "'$script'"/' "$CONFIG_FILE"
else
# If config.json doesn't exist, create it with auto_start_app
echo '{"auto_start_app": "'$script'"}' > "$CONFIG_FILE"
fi
"$binary" -X heapsize=$HEAPSIZE -v -i -c "$(cat main.py)"
fi
popd