[mdk-re] Re: [mdk-re] Как запустить два Х двумразным пользователям одновременно

Andriy Dobrovol's'kii =?iso-8859-1?q?dobr_=CE=C1_iop=2Ekiev=2Eua?=
Чт Дек 13 12:09:04 MSK 2001


Можно ли этот вариант сделать основным в дистрибутиве и вообще?
Всего,
Андрей

Michael Shigorin wrote:

> On Thu, Dec 13, 2001 at 10:14:09AM +0300, John wrote:
> 
>>Как запустить два Х двум разным пользователям одновременно? Что писать?
>>
> startx -- :N
> где N=0,1,... (и 0 по умолчанию)
> 
> Или см. аттач -- мой startx сам разбирается ;)
> 
> 
> 
> ------------------------------------------------------------------------
> 
> #!/bin/sh
> #
> # (c) 1999 Red Hat Software, Inc.
> # patched by Michael Shigorin <mike на altlinux.ru>
> # 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
> 
> # here's the race :(
> 
> # 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"
> 






Подробная информация о списке рассылки community