mirror of
https://github.com/imgfloat/client.git
synced 2026-02-05 12:09:27 +00:00
59 lines
1.1 KiB
Bash
Executable File
59 lines
1.1 KiB
Bash
Executable File
#!/usr/bin/env sh
|
|
set -eu
|
|
|
|
ELECTRON="$1"
|
|
APP_ENTRY="src/main.js"
|
|
SCREEN="1280x800"
|
|
|
|
for d in 99 98 97 96 95; do
|
|
if ! xdpyinfo -display ":$d" >/dev/null 2>&1; then
|
|
DISP="$d"
|
|
break
|
|
fi
|
|
done
|
|
|
|
[ -n "${DISP:-}" ] || {
|
|
echo "No free DISPLAY found" >&2
|
|
exit 1
|
|
}
|
|
|
|
echo "Using DISPLAY=:$DISP"
|
|
|
|
cleanup() {
|
|
kill "$ELECTRON_PID" "$OPENBOX_PID" "$XEPHYR_PID" 2>/dev/null || true
|
|
}
|
|
trap cleanup EXIT INT TERM
|
|
|
|
Xephyr ":$DISP" -screen "$SCREEN" -resizeable -ac &
|
|
XEPHYR_PID=$!
|
|
|
|
sleep 1
|
|
|
|
DISPLAY=":$DISP" openbox &
|
|
OPENBOX_PID=$!
|
|
|
|
sleep 0.5
|
|
|
|
DISPLAY=":$DISP" "${ELECTRON}" "$APP_ENTRY" &
|
|
ELECTRON_PID=$!
|
|
DISPLAY=":$DISP" xsetroot -solid "#009999"
|
|
|
|
while :; do
|
|
if ! kill -0 "$ELECTRON_PID" 2>/dev/null; then
|
|
echo "Electron exited — killing Xephyr"
|
|
kill "$XEPHYR_PID" 2>/dev/null || true
|
|
break
|
|
fi
|
|
|
|
if ! kill -0 "$XEPHYR_PID" 2>/dev/null; then
|
|
echo "Xephyr exited — killing Electron"
|
|
kill "$ELECTRON_PID" 2>/dev/null || true
|
|
break
|
|
fi
|
|
|
|
sleep 0.5
|
|
done
|
|
|
|
wait "$ELECTRON_PID" 2>/dev/null || true
|
|
wait "$XEPHYR_PID" 2>/dev/null || true
|