xkludge - Make X11R4 run on top of SunOS 4.1 SunView
Gene H. Olson
gene at zeno.mn.org
Mon Aug 13 16:07:08 AEST 1990
As has been discussed before in comp.sources.sun, and is very clear from
the X11R4 documentation, X11 is supposed to run on top of SunView. This
requires that SUN_WINDOWS be defined in $TOP/config/sun.cf. And it does
work GREAT with SunOS 4.0.3.
This feature makes it possible to run X on one frame buffer while you run
SunView on another. You can switch between the screens with
"adjacentscreens" easily, and I find it very helpful.
However this feature is broken in SunOS 4.1. If you try to bring up X on
top of Sunview it comes up, but hangs the keyboard. Research leads me to
believe that Sun's documented (See 4.1 Release notes) changes to poll(2)
somehow broke it.
Hacker that I am, I recompiled it with -g and tried to debug it with
"trace" and "dbx".
To my great amazement, I found that attaching a debugger to the Xsun
server fixed the problem! Since I really have no idea how the interface
works, and since I couldn't reproduce the problem with the debugger, I
reported the problem to Sun, and came up with "xkludge" shell script
enclosed below.
This workaround is an outrageous kludge. It simply starts up the X
server, attaches to it with "trace", then kills the trace. Using this
simple script the feature again works flawlessly, as it did under SunOS
4.0.3. I leave it to some informed Sun guru to explain why!
#! /bin/sh
# This is a shell archive. Remove anything before this line, then unpack
# it by saving it into a file and typing "sh file". To overwrite existing
# files, type "sh file -c". You can also feed this as standard input via
# unshar, or by typing "sh <file", e.g.. If this archive is complete, you
# will see the following message at the end:
# "End of shell archive."
# Contents: xkludge
# Wrapped by gene at zeno on Mon Aug 13 00:52:33 1990
PATH=/bin:/usr/bin:/usr/ucb ; export PATH
if test -f xkludge -a "${1}" != "-c" ; then
echo shar: Will not over-write existing file \"xkludge\"
else
echo shar: Extracting \"xkludge\" \(231 characters\)
sed "s/^X//" >xkludge <<'END_OF_xkludge'
XPATH=.:/usr/local/bin:/usr/bin/X11:/usr/ucb:/usr/bin:/usr/etc:/usr/sccs:/usr/5bin
Xexport PATH
X/usr/bin/X11/xinit &
Xsleep 15
XX=`ps -ax | sed -n -e 's/^ *\([0-9]*\) .* X :0$/\1/p'`
Xtrace -p $X 2>/dev/null &
XT=$!
Xsleep 5
Xkill $T
Xwait
END_OF_xkludge
if test 231 -ne `wc -c <xkludge`; then
echo shar: \"xkludge\" unpacked with wrong size!
fi
chmod +x xkludge
# end of overwriting check
fi
echo shar: End of shell archive.
exit 0
_________________________________________________________________________
__
/ ) Gene H. Olson uunet!digibd!zeno!gene
/ __ _ __ _ DigiBoard
(__/ _(/_//_(/_ Minneapolis, MN (612) 922-8055
More information about the Comp.sys.sun
mailing list