X Window System, Version 11, Release 2

X11R2 was the second release of the X Window System, Version 11 from MIT. It was released in , with the following changes excerpted from the release notes. The sources are available for download for historical reference from http://www.x.org/releases/X11R2/.


This is the second release of Version 11 of the X Window System from MIT. It is substantially more robust than the previous version and should provide a solid foundation upon which applications may be developed. No changes have been made to the X Protocol; the Resource Manager and the extension mechanism were the only parts of Xlib that were changed in incompatible ways. However, the command line arguments for specifying the server to contact and the default geometry for an application's main window have been changed in all supported clients. Also, the format for specifying default resources has been changed.

This release contains two separate distributions: one for software that is supported by the staff of the X Consortium, and one for user-contributed software that is provided “as is” as public service. Furthermore, printable versions of many documents are provided separately from the source code to make loading subsets of the release easier. Over time, we expect there to be migration in both directions between the two distributions.

The document X Window System Protocol, Version 11 is the final authority on what is and is not part of the core X Window System protocol. The server provided in this distribution is a sample implementation, not a specification of how servers must be written.

This release contains four higher level toolkits to make designing and implementing applications easier:

  • X Toolkit Intrinsics

    Currently under review by the X Consortium for possible inclusion in the X standard, this package provides a collection of resource, event, and object managers that may be used to build user interface objects called widgets. A sample set of widgets is provided. Sources are located in lib/Xt/ and lib/Xaw/.

  • Xrlib

    This is a collection of User Interface utilities and higher-level objects written by Hewlett-Packard. Future releases will use the X Toolkit Intrinsics. Sources are located in contrib/Xr11/.

  • Andrew Toolkit

    Developed by IBM and Carnegie-Mellon University for the CMU Andrew System, this package provides a collection of integrated, high-level objects and applications. Sources are located in contrib/andrew/.

  • InterViews

    Developed at Stanford University, this package provides tools for building user interface objects in the C++ programming language. Source are located in contrib/InterViews/.

The X Toolkit has changed substantially since the last release (note that it is now called “Xt” instead of “Xtk”). Although additional functionality will probably be added in future releases, the interfaces documented in the X Toolkit Intrinsics - C Language X Interface are expected to remain fairly stable.

For wider portability, applications should include the new header file <X11/Xos.h> instead of <strings.h>, <string.h>, <time.h>, <sys/time.h>, <fcntl.h>, or <sys/file.h>.

To make transition from X10 to X11 easier, a protocol converter that allows binary X10 programs to be run on X11 displays has been provided. In addition, this release uses “X11” instead of “X” wherever there is a conflict with X10 files of the same name (e.g. /usr/include/X11/, /usr/lib/X11/, /usr/bin/X11/, and -lX11). All programs should now #include X header files using “<X11/file>”.

This release should build and install without modification on machines running the following operating systems: 4.3bsd, Ultrix 2.0, SunOS 3.4, HP-UX 6.01, and Apollo Domain/IX 9.7.

What's New in this Release

This release differs from the previous one in the following areas:

X now has an official name

The X Consortium has designated the following as the official names of the X Window System:

  • X
  • X Window System
  • X Version 11
  • X Window System, Version 11
  • X11

Note that the phrases X.11, X-11, X Windows or any permutation thereof, are explicitly excluded from this list and should not be used to describe the X Window System (window system should be thought of as one word). In addition, X Window System is a trademark of MIT and should be acknowledged as such whenever it is used.

many, many bugs fixed

A large number of bugs have been fixed in the server, the libraries, and the clients. Many parts of the sample server that were broken in in the previous release have been fixed, and client workarounds for old bugs have been removed; old servers may not work properly with new clients. Many of the byte order problems have been fixed; this release should work equally well on both big endian and little endian architectures.

new servers

Native ddx source code has been contributed for the following servers: Apollo's monochrome and color displays; Digital's QDSS display; Hewlett-Packard's 9000/series 300 machines (310, 320, 330, and 350) with the 98547A, 98545A, and 98544A displays; and IBM's EGA, Megapel, 8514, and VGA displays. All of these server implementations use special display hardware to gain good performance.

compressed fonts

Many servers now do automatic uncompression of fonts that are stored in compress(1) format. This can save a substantial amount of disk space for seldomly used fonts.

Xrm merged into Xlib

The Resource Manager has been merged into Xlib and is now used by the XGetDefault routine and the X Toolkit. This means that defaults stored in the server using the xrdb(1) program are now honored by all programs. There is also a new environment variable called XENVIRONMENT, that specifies the name of an additional resource file to be merged in on top of the server defaults and any application defaults. The format for specifying resources has changed slightly to allow wildcarding within resource hierarchies (i.e. “program*name: value”). See the Xlib documentation on using the Resource Manager for more details.

X Toolkit Specification and implementation

The X Toolkit Specification and a sample implementation are included in this release. The X Toolkit provides a collection of resource, event, and object managers upon which user interface objects called widgets are built. This specification is currently under review by the X Consortium for possible inclusion in the X standard. The beginnings of an Athena widget set are also provided.

new -display and -geometry command line arguments

All supported clients have been changed to require a “-display” argument in command line specifications of the X server to use. Programs in previous releases mistakenly assumed that any command line argument that contained a colon (:) was a display name. This caused severe problems for sites with distributed file systems and for the new “-xrm” command line option in all X Toolkit clients. Similarly, the old “=geom” is being replaced by “-geometry geom”. All programs should accept -display and -geometry. Unambiguous abbreviations are allowed so long as the full name may also be given.

fewer flushes in Xlib

The Xlib event checking routines XNextEvent, XPeekEvent, XIfEvent, XCheckIfEvent, XPeekIfEvent, XWindowEvent, XCheckWindowEvent, XMaskEvent, XCheckMaskEvent, XCheckTypedEvent, XCheckTypedWindowEvent, and XPendingEvent have been changed to only flush the output buffer when they are about to block, instead of doing a flush on every call. This modification is compatible with the previous release and should not require any client code changes. Applications that do a lot of event checking will notice an increase in performance.

new send_event flag in Xlib XEvents

Events originating from another client using the XSendEvent routine no longer have the eighth bit of the event type set. Instead, a new “send_event” flag has been added to the various event structures. Because of this, all clients should be recompiled before being linked with the new library.

padding added to Xlib XEvents

To provide room in the event structures for extensions, a small amount of padding has been added to all events. Although no client code changes are necessary, all programs should be recompiled before being linked with the new library.

serial number tracking in Xlib

Support for tracking serial numbers of requests has been added. The protocol provides this information, but the previous release of the library discarded it. Two new macros NextRequest and LastKnownRequestProcessed (and corresponding routines) have been added to return the serial number of the next request and the serial number of the last request known to have been executed by the server.

new XEventsQueued routine in Xlib

A new routine, XEventsQueued, has been added to bring together the functionality of XQLength and XPending (i.e. they have been rewritten to use the new routine) and to add the ability to do a “non-flushing XPending.” New clients should use XEventsQueued instead of the old routines.

new XCreatePixmapFromBitmapData routine in Xlib

A new routine, XCreatePixmapFromBitmapData, has been added to create pixmaps of arbitrary depths given bitmap(1) format data. This should be used to create tiles (for backgrounds and borders) rather than XCreateBitmapFromData (which creates masks for defining clipping regions, cursor shapes, icon shapes, and stipple patterns).

misdeclared types fixed in Xlib

A number of width, height, and byte count arguments that should have been declared unsigned, but were not, have been fixed.

new XUnionRectWithRegion to Xlib

A new routine, XUnionRectWithRegion, has been added to merge a rectangle with a region. This is useful for implementing exposure compression.

XPutImage, XPutPixel and XGetPixel fixed in Xlib

The Xlib routines XPutImage, XPutPixel and XGetPixel have had many bugs fixed.

new X10 to X11 protocol translator

A client that masquerades as an X10 server but which uses X11 for input and output is now available. It allows X10 programs to run, unmodified, on X11 displays and should make changing over from X10 to X11 much easier.

reimplementations of old clients

The xrdb and xmodmap clients have been rewritten to provide a substantial number of new features. The new xrdb can use the C preprocessor to selectively load resources, merge in new resources, and edit current defaults into resource files. The new xmodmap reads description files that allow you to remap keys on the keyboard as well as redefine modifier keys. Both programs support the syntax of the versions in the previous release (except for the new -display requirements).

new clients

Two new programs, xlogo and xbiff, have been added to the supported distribution. These programs use the Logo and Mailbox widgets from the Athena widget set: xlogo displays the X Window System logo, and xbiff provides a little mailbox that pops up when you have mail.

old X Toolkit removed

All of the clients that used the old versions of the X Toolkit now use the version available in this release. Therefore, libXtk and liboldXtk have been dropped from this release.

new InterViews toolkit

Source code and documentation for a new version of the InterViews toolkit from Stanford University are available in the user-contributed distribution.

Andrew Toolkit

Source code and documentation for the Andrew Toolkit, developed by IBM and Carnegie-Mellon University are available in the user-contributed distribution.


Source code and documentation for an X11 version of the Hewlett-Packard Xrlib toolkit are available in the user-contributed distribution.


The Common Lisp User Interface Environment draft specification is available in the user-contributed distribution.

Cray patches

A collection of patches to make the version of Xlib distributed in the previous release work on a CRAY-XMP or CRAY-2 under UNICOS is available in the user-contributed distribution. Support for these platforms will be integrated in the next release.

MetaFont GF to X BDF converter

A filter for generating X BDF font files from MetaFont GF descriptions is available in the user-contributed distribution.

new gnuplot

A new version of the gnuplot package is available in the user-contributed distribution.

Kanji xterm

A version of xterm that supports kanji is available in the user-contributed distribution. A public domain Kanji font has also been added to fonts/bdf/.

XMenu no longer supported

The XMenu package is obsolete and will no longer be supported. It has been moved to the user-contributed distribution and will be dropped from future releases.

Portable Bitmap Toolkit

A “Portable Bitmap Toolkit” for converting bitmaps to and from various formats is available in the user-contributed distribution.


A dvi file previewer for examining TeX output is available in the user-contributed distribution.


A sample X Toolkit application for maintaining a desktop calendar is available in the user-contributed distribution.


A rewrite of the X10 xman program to the X Toolkit is available in the user-contributed distribution.


A rewrite of the X10 xmore program to the X Toolkit is available in the user-contributed distribution.


A system parameter monitor for operating systems derived from 4.2bsd is available in the user-contributed distribution.


A port of the X10 xshell program is available in the user-contributed distribution.

Copyright © 1988 by the Massachusetts Institute of Technology .

Permission to use, copy, modify, and distribute this software and its documentation for any purpose and without fee is hereby granted, provided that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting documentation, and that the name of M.I.T. not be used in advertising or publicity pertaining to distribution of the software without specific, written prior permission. M.I.T. makes no representations about the suitability of this software for any purpose. It is provided "as is" without express or implied warranty.

Ultrix and Ultrix-32 are trademarks of Digital Equipment Corporation; SunOS is a trademark of Sun Microsystems, Inc.; HP-UX is a trademark of Hewlett-Packard, Domain is a trademark of Apollo Computer, PostScript is a trademark of Adobe Systems Inc., and Unix is a trademark of AT&T Bell Laboratories.