43 lines
1.2 KiB
Bash
43 lines
1.2 KiB
Bash
#!/bin/sh
|
|
# Rescue-only tty launcher for the Clawdie live XFCE session.
|
|
#
|
|
# Prefer SDDM for normal boot. This helper intentionally bypasses startx's
|
|
# xauth/serverauth setup because installer-derived live environments can make
|
|
# startx fail before the client session runs. It starts a local-only Xorg server
|
|
# with access control disabled for console rescue/debugging.
|
|
|
|
set -eu
|
|
|
|
CLIENT="${1:-/usr/local/bin/clawdie-xfce-session}"
|
|
SERVER="${XORG_SERVER:-/usr/local/bin/Xorg}"
|
|
|
|
if [ ! -x "$CLIENT" ]; then
|
|
echo "ERROR: client session is not executable: $CLIENT" >&2
|
|
exit 1
|
|
fi
|
|
if [ ! -x "$SERVER" ]; then
|
|
echo "ERROR: Xorg server is not executable: $SERVER" >&2
|
|
exit 1
|
|
fi
|
|
if ! command -v xinit >/dev/null 2>&1; then
|
|
echo "ERROR: xinit is not available" >&2
|
|
exit 1
|
|
fi
|
|
|
|
_display=""
|
|
_i=0
|
|
while [ "$_i" -lt 10 ]; do
|
|
if [ ! -e "/tmp/.X${_i}-lock" ] && [ ! -S "/tmp/.X11-unix/X${_i}" ]; then
|
|
_display=":${_i}"
|
|
break
|
|
fi
|
|
_i=$((_i + 1))
|
|
done
|
|
|
|
if [ -z "$_display" ]; then
|
|
echo "ERROR: no free local X display found in :0..:9" >&2
|
|
exit 1
|
|
fi
|
|
|
|
echo "Starting Clawdie rescue X session on ${_display}"
|
|
exec xinit "$CLIENT" -- "$SERVER" "$_display" -nolisten tcp -ac
|