--- xinit-1.3.2/startx.cpp.curvt 2012-04-06 16:05:49.731992634 +0100 +++ xinit-1.3.2/startx.cpp 2012-04-06 16:53:08.345125235 +0100 @@ -78,6 +78,7 @@ defaultdisplay=":0" clientargs="" serverargs="" +gotvt=no #ifdef __APPLE__ @@ -206,6 +207,9 @@ display="$1" serverargs="$1" else + if expr "$1" : '^vt[0-9][0-9]*$' > /dev/null 2>&1; then + gotvt=yes + fi serverargs="$serverargs $1" fi fi @@ -224,6 +228,19 @@ serverargs=$defaultserverargs fi +XCOMM we need to find the vt number to pass to X to prevent a vt switch +if [ "$gotvt" = "yes" ]; then + echo "Warning: Using user supplied vt number. This could affect user permissions." >&2 +else + tty=`cat /sys/class/tty/tty0/active` + if expr "$tty" : '^tty[0-9][0-9]*$' > /dev/null 2>&1; then + vt=`echo $tty | sed 's,^tty,,'` + serverargs="$serverargs vt$vt" + else + echo "Warning: Cound not find vt number. This could affect user permissions." >&2 + fi +fi + XCOMM if no display, use default if [ x"$display" = x ]; then display=$defaultdisplay