#!/bin/sh # # (c) 1999 Red Hat Software, Inc. # patched by Michael Shigorin # to open new displays automagically bindir=/usr/X11R6/bin userclientrc=$HOME/.xinitrc userserverrc=$HOME/.xserverrc sysclientrc=/etc/X11/xinit/xinitrc sysserverrc=/etc/X11/xinit/xserverrc clientargs="" serverargs=" -quiet " TMPDIR=${TMPDIR:-/tmp} if [ -f $userclientrc ]; then clientargs=$userclientrc else if [ -f $sysclientrc ]; then clientargs=$sysclientrc fi fi if [ -f $userserverrc ]; then serverargs=$userserverrc else if [ -f $sysserverrc ]; then serverargs=$sysserverrc fi fi # select next free display... if [ -n "`ls /tmp/.X*-lock 2>/dev/null`" ]; then display=:$[1+0$(ls /tmp/.X*-lock | tail -1 | sed -n 's/.*X\([[:digit:]]\+\)-lock$/\1/p')] else display=:0 fi whoseargs="client" while [ "x$1" != "x" ]; do case "$1" in /''*|\.*) if [ "$whoseargs" = "client" ]; then if [ "x$clientargs" = x ]; then clientargs="$1" else clientargs="$clientargs $1" fi else if [ "x$serverargs" = x ]; then serverargs="$1" else serverargs="$serverargs $1" fi fi ;; --) whoseargs="server" ;; *) if [ "$whoseargs" = "client" ]; then clientargs="$clientargs $1" else case "$1" in :[0-9]) display="$1" ;; *) serverargs="$serverargs $1" ;; esac fi ;; esac shift done # set up default Xauth info for this machine mcookie=`mcookie` serverargs="$serverargs -auth $HOME/.Xauthority" xauth add $display . $mcookie xauth add `hostname -f`$display . $mcookie # remember which VC will be occupied by X to deallocvt it later XINITLOG="$TMPDIR"/.startx-$HOSTNAME$display while [ -e "$XINITLOG" ]; do XINITLOG="$TMPDIR"/.startx-$HOSTNAME$display-$RANDOM done # protect logfile >"$XINITLOG" chmod 600 "$XINITLOG" xinit $clientargs -- $display $serverargs 2>&1 | tee -a "$XINITLOG" # clean up deallocvt $(sed -n -e 's/^(using VT number \([[:digit:]]\+\))/\1/p' "$XINITLOG") 2>/dev/null rm -f "$XINITLOG"