diff options
author | Anas Nashif <anas.nashif@intel.com> | 2012-11-10 07:08:42 -0800 |
---|---|---|
committer | Anas Nashif <anas.nashif@intel.com> | 2012-11-10 07:08:42 -0800 |
commit | ec652d0cb27505a1d9b070d5f649d912d8615b5f (patch) | |
tree | 1f35371fcb012c388127bd1e35280222e59597a4 | |
parent | 3f36a809de678457b68a87f225d3fc86aeb804e5 (diff) | |
download | xinit-ec652d0cb27505a1d9b070d5f649d912d8615b5f.tar.gz xinit-ec652d0cb27505a1d9b070d5f649d912d8615b5f.tar.bz2 xinit-ec652d0cb27505a1d9b070d5f649d912d8615b5f.zip |
changes from msuse
-rw-r--r-- | startx.cpp | 114 | ||||
-rw-r--r-- | xinitrc.cpp | 6 |
2 files changed, 118 insertions, 2 deletions
@@ -70,10 +70,115 @@ userclientrc=$HOME/.xinitrc sysclientrc=XINITDIR/xinitrc #endif +XCOMM +XCOMM check for installed servers +XCOMM + +#ifdef linux + +INSTALLED_SERVERS=`ls -1 /usr/bin/Xorg /usr/X11R6/bin/XFree86 /usr/X11R6/bin/Xorg* 2>/dev/null` + + +if [ -z "$INSTALLED_SERVERS" ]; then + + echo "" + echo "You did not install any X-Server \(e.g. Xorg\)!" + echo "Please install at least one server to start X." + echo "I'm aborting now." + exit 1 +fi + + +XCOMM +XCOMM perhaps a windowmanager is specified? +XCOMM +XCOMM +XCOMM find wmlist utility, else take twm as default (always there :-)) +XCOMM +type -p wmlist &> /dev/null && WMLIST="`for i in $(wmlist); do echo $i; done | sort`" +test -z "$WMLIST" && WMLIST="twm" + +test "$1" = "--" || { test -n "$1" && WANTEDWM=`basename "$1"` ; } + +XCOMM +XCOMM User could have set a list of window manager in WINDOWMANAGERLIST. +XCOMM go throu wms and check if user specified a reachable one. +XCOMM + +for WM in $WMLIST $WINDOWMANAGERLIST +do + test "$WM" = "$WANTEDWM" && { +XCOMM +XCOMM is it reachable via $PATH? +XCOMM + type -p $WM &> /dev/null || { + + echo "`basename $0`: error: the requested window manager '$1' could not be found!" + echo "Window manager must be one of (currently installed window managers):" + for i in $WMLIST; do echo $i; done + exit 1 + } +XCOMM +XCOMM OK, we got it, this will be the override for WINDOWMANAGER +XCOMM + export WINDOWMANAGER=$WM + shift 1 + break + } +done + +unset WINDOWMANAGERLIST WMLIST WANTEDWM WM + +XCOMM +XCOMM check for the first link +XCOMM + +if [ ! -L /usr/X11R6/bin/X -a ! -L /usr/bin/X ]; then + + echo "" + echo "There is no link /usr/X11R6/bin/X (/usr/bin/Xorg) to /var/X11R6/bin/X!" + echo "Please link the files as mentioned above or install the X-Server again." + echo "I'm aborting now." + exit 1 +fi + +XCOMM +XCOMM check for the second link +XCOMM + +if [ ! -L /var/X11R6/bin/X ]; then + + echo "" + echo "There is no link /var/X11R6/bin/X to the correct X Server binary." + echo "Please configure the correct X Server with SaX/SaX2, which will create" + echo "the missing link. I'm aborting now." + exit 1 +fi + +XCOMM +XCOMM check if the Xorg file is an executable or an accidentially copied script or similar things +XCOMM + +if [ ! -x /var/X11R6/bin/X ]; then + + echo "" + echo "The file Xorg (binary of X-Server) doesn't seem to be a binary file." + echo "Please check it or / and install a new X-Server-binary." + echo "I'm aborting now." + exit 1 +fi + +#endif /* linux */ + +XCOMM set $DISPLAYMANAGER_XSERVER $DISPLAYMANAGER_XSERVER_TCP_PORT_6000_OPEN +. /etc/sysconfig/displaymanager + userserverrc=$HOME/.xserverrc sysserverrc=XINITDIR/xserverrc defaultclient=XTERM +XCOMM set X Server accordingly (Xorg/Xgl) defaultserver=XSERVER +test -n "$DISPLAYMANAGER_XSERVER" && defaultserver=/usr/bin/$DISPLAYMANAGER_XSERVER defaultclientargs="" defaultserverargs="" defaultdisplay=":0" @@ -324,6 +429,9 @@ else XINIT "$client" $clientargs -- "$server" $display $serverargs fi #else +XCOMM handle TCP port 6000 +test "$DISPLAYMANAGER_XSERVER_TCP_PORT_6000_OPEN" != "yes" && \ + serverargs="$serverargs -nolisten tcp" #if defined(__APPLE__) || defined(__CYGWIN__) eval XINIT \"$client\" $clientargs -- \"$server\" $display $serverargs @@ -334,6 +442,12 @@ XINIT "$client" $clientargs -- "$server" $display $serverargs #endif retval=$? +if [ "$retval" != 0 -a ! -u "/usr/bin/Xorg" ]; then + echo "-------------------------------------------------------------------------------------------" + echo "xinit failed. /usr/bin/Xorg is not setuid, maybe that's the reason?" + echo "If so either use a display manager (strongly recommended) or adjust /etc/permissions.local" +fi + if [ x"$enable_xauth" = x1 ] ; then if [ x"$removelist" != x ]; then XAUTH remove $removelist diff --git a/xinitrc.cpp b/xinitrc.cpp index 049a8e4..8b6e770 100644 --- a/xinitrc.cpp +++ b/xinitrc.cpp @@ -91,8 +91,10 @@ if [ -d XINITDIR/xinitrc.d ] ; then unset f fi -TWM & +if [ -x /usr/X11R6/bin/fvwm -o -x /usr/bin/fvwm]; then + exec fvwm +fi XCLOCK -geometry 50x50-1+1 & XTERM -geometry 80x50+494+51 & XTERM -geometry 80x20+494-0 & -exec XTERM -geometry 80x66+0+0 -name login +exec TWM |