-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathrun
More file actions
executable file
·70 lines (56 loc) · 1.61 KB
/
run
File metadata and controls
executable file
·70 lines (56 loc) · 1.61 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
#!/bin/sh
clear
export DISPLAY=:3.0
export SDL_VIDEODRIVER=x11
export SDL_VIDEO_WINDOW_POS=0,0
export SDL_VIDEO_CENTERED=0
# Cleanup function
cleanup() {
echo ""
echo "===== Cleaning up ====="
# Kill the user command if it's still running
if [ -n "$USER_CMD_PID" ] && kill -0 $USER_CMD_PID 2>/dev/null; then
kill $USER_CMD_PID 2>/dev/null
sleep 0.5
kill -0 $USER_CMD_PID 2>/dev/null && kill -9 $USER_CMD_PID 2>/dev/null
fi
# Kill xserver-screen
if [ -n "$XSERVER_PID" ] && sudo kill -0 $XSERVER_PID 2>/dev/null; then
sudo kill $XSERVER_PID 2>/dev/null
sleep 0.5
sudo kill -0 $XSERVER_PID 2>/dev/null && sudo kill -9 $XSERVER_PID 2>/dev/null
fi
# Kill Xvfb
if [ -n "$XVFB_PID" ] && kill -0 $XVFB_PID 2>/dev/null; then
kill $XVFB_PID 2>/dev/null
sleep 0.5
kill -0 $XVFB_PID 2>/dev/null && kill -9 $XVFB_PID 2>/dev/null
fi
echo "===== Cleanup complete ====="
exit 0
}
# Set up trap to catch SIGINT (Ctrl+C) and SIGTERM
trap cleanup INT TERM
Xvfb $DISPLAY -screen 0 192x128x24 &
XVFB_PID=$!
sleep 1
sudo xserver-screen \
--led-gpio-mapping=regular \
--led-brightness=60 \
--led-rows=64 \
--led-cols=64 \
--led-chain=3 \
--led-parallel=2 \
--led-slowdown-gpio=4 \
--led-scan-mode=1 \
--led-limit-refresh=60 \
--led-pwm-bits=11 \
--led-panel-type=FM6126A &
XSERVER_PID=$!
sleep 1
echo "===== Running your command: $* ====="
"$@" &
USER_CMD_PID=$!
wait $USER_CMD_PID
echo "===== Command finished ====="
cleanup