--- xinit-1.4.4/startx.before_patch2 2025-03-09 23:08:33.597781034 +0100 +++ xinit-1.4.4/startx 2025-03-09 23:27:30.128779830 +0100 @@ -61,6 +61,93 @@ [ -f "${XINITRC}" ] && userclientrc="${XINITRC}" sysclientrc="/usr/libexec/xinit/xinitrc" +# +# check for installed servers +# + +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 + + +# +# perhaps a windowmanager is specified? +# +# +# find wmlist utility, else take twm as default (always there :-)) +# +type wmlist >/dev/null 2>&1 && WMLIST="`for i in $(wmlist); do echo $i; done | sort`" +test -z "$WMLIST" && WMLIST="twm" + +test "$1" = "--" || { test -n "$1" && WANTEDWM=`basename "$1"` ; } + +# +# User could have set a list of window manager in WINDOWMANAGERLIST. +# go through wms and check if user specified a reachable one. +# + +for WM in $WMLIST $WINDOWMANAGERLIST +do + test "$WM" = "$WANTEDWM" && { +# +# is it reachable via $PATH? +# + type $WM >/dev/null 2>&1 || { + + echo "`basename $0`: error: the requested window manager '$1' could not be found!" + echo "Window manager must be one of (currently installed window amangers):" + for i in $WMLIST; do echo $i; done + exit 1 + } +# +# OK, we got it, this will be the override for WINDOWMANAGER +# + export WINDOWMANAGER=$WM + shift 1 + break + } +done + +unset WINDOWMANAGERLIST WMLIST WANTEDWM WM + +# +# check symlink +# + +if [ ! -L /usr/bin/X ]; then + + echo "" + echo "There is no link /usr/bin/X to X server (/usr/bin/Xorg)!" + echo "Please link the files as mentioned above or install the X-Server again." + echo "I'm aborting now." + exit 1 +fi + +# +# check if the Xorg file is an executable or an accidentally copied script or similar things +# + +if [ ! -x /usr/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 + +# set $DISPLAYMANAGER_XSERVER $DISPLAYMANAGER_XSERVER_TCP_PORT_6000_OPEN +. /etc/sysconfig/displaymanager + + userserverrc="$HOME/.xserverrc" [ -f "${XSERVERRC}" ] && userserverrc="${XSERVERRC}" sysserverrc="$xinitdir/xserverrc" @@ -319,6 +406,10 @@ done fi +# handle TCP port 6000 +test "$DISPLAYMANAGER_XSERVER_TCP_PORT_6000_OPEN" != "yes" && \ + serverargs="$serverargs -nolisten tcp" + case "$(uname -s)" in CYGWIN_NT*|Darwin) eval "$xinit" \"$client\" $clientargs -- \"$server\" $display $serverargs @@ -329,6 +420,12 @@ esac 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 and run \"chkstat --system --set\" afterwards" +fi + if [ "$enable_xauth" = 1 ] ; then if [ "$removelist" != "" ]; then "$xauth" remove $removelist --- xinit-1.4.4/xinitrc.before_patch2 2025-03-09 23:08:33.601781115 +0100 +++ xinit-1.4.4/xinitrc 2025-03-09 23:31:04.025108190 +0100 @@ -50,7 +50,10 @@ 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