Notes on XNeXT Version 0.9.2 This is the original public release version of XNeXT, the X11R3 server for the NeXT machine. Note first that the version number is less than one. There are guaranteed to be problems with this code. With that in mind, here is what you need to know to install and use this X server. This file assumes some familiarity with X. If you have never used X before, I suggest that you get a copy of the Consortium distribution and read the tutorials they distribute. Installation This distribution of XNeXT consists of this README file and a single compressed tar file. This tar file can be placed anywhere where the NeXT machine can find it (locally or remotely). Then, as root, run the install shell script from the top level directory. This shell script will create symlinks from /usr/lib/X11, /usr/include/X11, /usr/bin/X11, and /LocalApps/XNeXT into the tar tree. Running the uninstall script will deinstall XNeXT. Note that at this time, all the binaries are compiled with -g, so I can get meaningful bug reports with stack traces in them. If you don't want the symbols, strip the binaries. Note that there are no man pages or other documentation. This file is designed to complement an X release, not replace it. X can be anonymously FTP'd from ns.uu.net and gatekeeper.dec.com. Operation If you have never used X before, stop now. Get a copy of the X consortium distribution or one of the third part books on X and read it, so that you understand the basics. To execute the server, either type "/LocalApps/XNeXT -su -bs", or launch the executable from the browser or dock. If you use the first method, be sure to specify at least the -su and -bs options. If you forget, you will lose. The other most useful argument is -geometry WxH, which let's the user specify the initial size. DO NOT change the location. To change the behavior when launching off the dock, use dwrite to create a default like this: dwrite XNeXT MachLaunchFlags "-su -bs -geometry 1024x768" and these options will be used to execute the server. A NextStep window containing the X server will be created. After this, the server acts much like a dedicated X server does. Unix domain and internet socket connections to the server are supported. Use unix:0.0 as the default DISPLAY environment variable. The /usr/bin/X11 directory will contain the binaries that the X consortium normally ships with their sources. The mouse has to be dealt with rather specially. At this time, in order to use both buttons, you need to have the right button configured to pop up a menu in your Prefs. Rather than popping up a menu, it will signal a button 3 press to the X server. Pressing both buttons at the same time will generate a button two event, but it will ALSO generate either a button one or a button three event. The best thing to do is to reconfigure your software not to use button two if at all possible. (If you do this for xterm or twm, please send these patches back to xnext@athena.mit.edu.) This should be enough to get started. Be sure to read the help and info windows at least once to familiarize yourself with the other ideosyncracies of the system. Clients The clients packaged with the server are the standard clients from the X consortium release. With the exception of uwm and xload, they all seem to work as advertised, except for the comment about mouse buttons above. The rest of this document is concerned with technical details about the server and with information on building your own applications to run under XNeXT. Server The server is an X11 R3 based X server. With one tiny exception, the entire dix layer has been preserved, and large pieces of the 4.2bsd os, mi, and mfb layers have been preserved. The ddx layer is in three pieces. The first is a .nib file, which defines the panels and menus for the X server. The second piece is about 9000 lines of C and Objective C source code. The third part is a wrapper around a proprietary library which I use to get a frame buffer in order to implement the mfb layer. The code is rather nasty, using threads to keep the DPS and X pieces away from each others' throats. Until I release source, thats about all I can say. Prose just doesn't do justice to code. Libraries and Header Files The libraries and header files supplied with XNeXT are exactly the same as those in the other X Consortium releases. In fact, they are compiled from the exact same code., byte for byte. So if you have X clients, all you should need to do is type "make", assuming your code is clean enough to compile in the first place :-) Sources Personally, I would like to just give this whole thing away. However, there is a proprietary library involved; as soon as I can get that library isolated from the rest of the code, I will release the sources in a form compatible with the standard X11R3 source tree. Disclaimers and Other This software has been in production for 7 months. I would love to see an R4 version, but time is a serious constraint. The primary developer is an MIT undergraduate with lots of other things to do, like pass his courses and graduate someday. Because of this, support will be sparse at times. Just bear with me, and try to make bug reports as specific as possible. Once I get sources out, hopefully I can enlist interested people to help me support this monster. One last request: PLEASE use the address xnext@athena.mit.edu for bug reports and suggestions. DO NOT send mail to me personally. Also, look at the Help and Info panels inside XNeXT. They may contain valuable information. Marc Horowitz Systems Development MIT - Project Athena