Группа :: Система/X11
Пакет: xorg-x11
Главная Изменения Спек Патчи Исходники Загрузить Gear Bugs and FR Repocop
#!/bin/sh
# $Xorg: startx.cpp,v 1.3 2000/08/17 19:54:29 cpqbld Exp $
#
# This is just a sample implementation of a slightly less primitive
# interface than xinit. It looks for user .xinitrc and .xserverrc
# files, then system xinitrc and xserverrc files, else lets xinit choose
# its default. The system xinitrc should probably do things like check
# for .Xresources files and merge them in, startup up a window manager,
# and pop a clock and serveral xterms.
#
# $XFree86: xc/programs/xinit/startx.cpp,v 3.12 2001/11/30 20:57:48 dawes Exp $
userclientrc="$HOME/.xinitrc"
userserverrc="$HOME/.xserverrc"
sysclientrc=/etc/X11/xinit/xinitrc
sysserverrc=/etc/X11/xinit/xserverrc
defaultclientargs=""
defaultserverargs=""
clientargs=
serverargs=
display=
if [ -f $userclientrc ]; then
defaultclientargs=$userclientrc
elif [ -f $sysclientrc ]; then
defaultclientargs=$sysclientrc
fi
if [ -f $userserverrc ]; then
defaultserverargs=$userserverrc
elif [ -f $sysserverrc ]; then
defaultserverargs=$sysserverrc
fi
add_client_args()
{
if [ -z "$clientargs" ]; then
clientargs="$1"
else
clientargs="$clientargs $1"
fi
}
add_server_args()
{
if [ -z "$serverargs" ]; then
serverargs="$1"
else
serverargs="$serverargs $1"
fi
}
add_def_client_args()
{
if [ -z "$clientargs" ]; then
clientargs="$defaultclientargs $1"
else
clientargs="$clientargs $1"
fi
}
add_def_server_args()
{
if [ -z "$serverargs" ]; then
serverargs="$defaultserverargs $1"
else
serverargs="$serverargs $1"
fi
}
whoseargs=client
while [ -n "$1" ]; do
case "$1" in
/''*|\.*)
if [ "$whoseargs" = client ]; then
add_client_args "$1"
else
add_server_args "$1"
fi
;;
--)
whoseargs=server
;;
*)
if [ "$whoseargs" = client ]; then
add_def_client_args "$1"
else
if [ -z "$display" -a -z "${1##:*}" ]; then
display="$1"
fi
add_def_server_args "$1"
fi
;;
esac
shift
done
# process client arguments
if [ -z "$clientargs" ]; then
clientargs="$defaultclientargs"
fi
# process server arguments
if [ -z "$serverargs" ]; then
serverargs="$defaultserverargs"
fi
if [ -z "$XAUTHORITY" ]; then
export XAUTHORITY=$HOME/.Xauthority
fi
# select next free display if not specified
if [ -z "$display" ]; then
last_display=`find /tmp/ -maxdepth 1 -type f -name '.X*-lock' |
sed -ne 's,^/tmp/\.X\([[:digit:]]\+\)-lock$,\1,p' |
sort -n |
tail -1`
[ -z "$last_display" ] || display=":$((1+last_display))"
fi
# set up default Xauth info for this machine
removelist=
authdisplay=${display:-:0}
mcookie=`mcookie`
for displayname in "$authdisplay" "`hostname -f`$authdisplay"; do
if ! xauth list "$displayname" |fgrep -qs "$displayname "; then
xauth add "$displayname" . "$mcookie"
removelist="$displayname $removelist"
fi
done
cleanup()
{
[ -z "$xinit_pid" ] || kill "$xinit_pid"
}
trap cleanup EXIT
xinit $clientargs -- $serverargs $authdisplay &
xinit_pid=$!
wait "$xinit_pid"
xinit_pid=
if [ -n "$removelist" ]; then
xauth remove $removelist
fi
DEALLOCVT=/usr/bin/deallocvt
if [ -x "$DEALLOCVT" ]; then
"$DEALLOCVT"
fi