#!/bin/sh
### xstart  -*- Sh -*-
## Start a local X server, without root privileges.

### Code:

set -e
set -C -u

netns=xserverns
xorg=/usr/lib/xorg/Xorg

vt=${1}
dpy=${2}
shift 2

## FIXME: rather crude
ou=
p=
for q ; do
    if test "$p" = -auth ; then
        ou=${q}
        break
    fi
    p=${q}
done
au=$(mktemp -- /run/xserverauth/XXXXXXXX)
test -n "$ou" \
    && cp -- "$ou" "$au"

openvt -c "$vt" -w -- true
u=xserver${vt#1}
chown -- "$u" /dev/tty"$vt" ${au:+"$au"}

set -- "$dpy" vt"$vt" "$@" \
    -logfile /var/log/xserver/Xorg."${dpy#:}.$(date +%s.%N)".log \
    -auth "$au" -retro

## .
exec ${netns:+ip netns exec "$netns"} \
    nice -n+7 ionice -c 3 -- \
    su -m -g xserver -c "HOME=/tmp ${xorg} ${*}" -- "$u"

### xstart ends here
