File entrypoint.sh of Package xorg-image
#!/bin/bash
# Function to log messages
log() {
echo "[$(date +'%Y-%m-%dT%H:%M:%S%z')] $@"
}
log "Starting X11 entrypoint script"
# Trap signals for graceful shutdown
trap 'log "Received SIGTERM, initiating shutdown"; cleanup' SIGTERM
trap 'log "Received SIGINT, initiating shutdown"; cleanup' SIGINT
# Cleanup function to stop all relevant processes
cleanup() {
log "Cleaning up and stopping processes"
pkill -TERM -f "/usr/bin/Xorg" || true
pkill -TERM -f icewm-session-lite || true
pkill -TERM -f icewmbg || true
pkill -TERM -f icewm || true
sleep 3
# Force kill if needed
pkill -KILL -f "/usr/bin/Xorg" || true
pkill -KILL -f icewm || true
log "Cleanup complete, exiting"
exit 0
}
# Set default DISPLAY if not set
if [ -z "$DISPLAY" ]; then
log "DISPLAY variable is not set, defaulting to :0"
DISPLAY=:0
fi
# Extract display number from DISPLAY variable
DISPLAY_NUM=$(echo $DISPLAY | sed 's/^://')
# Clean up existing X server lock files and sockets
log "Cleaning up existing X server lock files for display $DISPLAY"
rm -f /tmp/.X${DISPLAY_NUM}-lock /tmp/.X11-unix/X${DISPLAY_NUM}
if [ $# -gt 0 ]; then
log "Executing custom command: $@"
exec "$@"
else
# Start X server
log "Starting X server on display $DISPLAY"
startx -- "$DISPLAY" &
X_PID=$!
# Wait for X server process (Xorg) to finish
log "X server (startx) running"
wait $X_PID
log "X server has exited"
fi