X11R3

# X Window System, Version 11, Release 3 X11R3 was the third 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/X11R3/. ## Overview Substantial progress has been made in improving the robustness and general usability of the sample server, libraries, and applications. Many bugs have been fixed, support for several new platforms has been added, and backing store and save-unders have been implemented. No incompatible changes have been made to either the core Protocol or to the *Xlib* programming library. Several changes have been made to the X Toolkit Intrinsics that will require minor additions to widget class records. Professionally designed font families from Adobe Systems, Inc. and Digital Equipment Corporation, and from Bitstream, Inc. have replaced the chaotic collection that was shipped in the previous releases. This may require some minor adjustments of user preferences files. Fonts are no longer named according to the files in which they are stored; instead, the server reads a table out of each directory that specifies in which file to look for each font. In addition, support for wildcarding and aliasing font names has been added. Since the last release, the X Consortium has added the following specifications to the X standard: * *X Toolkit Intrinsics* The X Toolkit Intrinsics as specified in the document X Toolkit Intrinsics - C Language Interface have been adopted as a non-exclusive, required standard for toolkit development. Any vendor that ships *Xlib* is now expected to provide *Xt* as well. Vendors are free to develop and ship alternative toolkits, but they if they ship *Xlib*, they should also ship *Xt*. Applications developers should note that this specification does not include a widget set. * *BDF Font File Format* The Bitmap Distribution Format (BDF) as specified in the document Bitmap Distribution Format Format 2.1 has been adopted as a non-exclusive, required standard for font file interchange. Any vendor that ships an X Window System server is expected to provide a way of translating BDF fonts into the appropriate server-specific format. To avoid conflict with Version 10 applications, all C language source code is expected to use the prefix `X11/` when including header files as well as use the library name `libX11.a` or the loader option `-lX11` when linking. In addition, UNIX programs are expected to use the command line options `-display host:dpy` and `-geometry geometryspec` in place of the obsolete `host:dpy` or `=geometryspec` formats. Applications that ignore these guidelines will no longer function properly with this release. Font support in the sample server has been improved in several ways: * *font names different from file names* A font's name is now determined by the contents of the property named FONT rather than the name of the file in which it is stored. A new utility named *mkfontdir* is used to scan the fonts in a directory and build a database listing each font name and the file in which it is stored. The server then uses this database when looking for fonts in a given directory. * *new font naming scheme* A new convention for uniquely naming fonts of any style, resolution, and size is now used for all of the new core fonts. * *wildcarding in font names* The sample server now supports wildcard characters in font names (such as would be given on a command line or in a resource database). This makes specifying fonts which use the new naming scheme much easier. This behavior is allowed by the Protocol but is not guarranteed in other servers. * *font name aliasing* Font directories may now contain a list of font name synonyms which may be used as alternate names for existing fonts. This list is stored in the file `fonts.alias` and is read whenever the font database is scanned by the server. * *new fonts* Adobe Systems, Inc. and Digital Equipment Corporation have jointly donated 5 families of fonts (*Courier*, *Times*, *Helvetica*, *New Century Schoolbook*, and *Symbol*) in a variety of sizes, styles and weights. Bitstream, Inc. has donated its *Charter* font family in the same sizes, styles and weights. Most of the fonts that were shipped in previous releases have been moved to the user-contributed distribution, and all core clients have been converted to use the new fonts. Applications developers and general users are very strongly urged to use the new fonts. This release should build and install on machines running the following operating systems: 4.3+tahoe, Ultrix, SunOS, HP-UX, Domain/IX, A/UX, and UNICOS, and AOS 4.3. See any `README` files in the appropriate `server/ddx/` directories or `*.macros` files in `util/imake.includes/` for details. ## What's New in this Release The primary focus of this release has been to fix bugs in the server and in the base programming libraries. In addition, several key features have been added so that this release can provide a clean, sturdy foundation for developing applications. ### Changes to the core distribution The following additions, deletions, and modifications have been made to the software in the core distribution. Users of the old fonts will need to edit their resources files. Widget writers will need to following the instructions in the document Converting Widgets from X11 Release 2 to X11 Release 3. * 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 the previous release have been fixed. In particular, ink metrics in fonts have been fixed; client errors in computing character sizes will now be easy to spot. * build configuration simplified The configuration templates in `util/imake.includes` have been restructured to make per-server and per-site changes easier to make. A `README` file in that directory now describes each of the parameters that may be set and site-specific changes have been isolated in a new file named `site.def`. The template file `Imake.tmpl` should never need to be modified. * new servers New support has been added to the sample server for the following platforms: Parallax video graphics processor for Suns and Vaxes, and Apple Macintosh II under A/UX. * new fonts Adobe Systems, Inc. and Digital Equipment Corporation have jointly donated BDF font files for the *Courier*, *Times*, *Helvetica*, *New Century Schoolbook*, and *Symbol* families at 8, 10, 12, 14, 18, and 24 point sizes, Roman and Italic or Oblique styles, medium and bold weights, for 75 dot per inch monitors. Bitstream, Inc. has donated BDF font files for its *Charter* family at the same sizes, styles, and weights for both 75 and 100 dpi monitors. Both donations use the ISO Latin-1 character set. All of the core clients have been changed to use the new fonts. The fonts that were shipped with previous releases have been moved to the user-contributed distribution (except for 6x10, 6x12, 6x13, 8x13, 8x13bold, and 9x15). * font name wildcarding The sample server now accepts the same wildcard characters in the *OpenFont* request as in the *ListFonts* request. This is very useful for refering to fonts with very long names, such as those in the new font sets. Users are encouraged to carefully select wildcarded names so that they will work properly on monitors with different resolutions (for example, when specifying a size, use a wild card for the pixel size, but specify the point size). Note that this behavior is allowed by the Protocol, but is not required of other servers. * font names separated from file names Font names are no longer tied to the names of the files in which they are stored. Instead, the name of the font is taken from the FONT property in the font data. A script for generating the appropriate font name from the other properties in a font file may be found in `util/scripts/fontname.sh`. The sample server no longer scans font directories, but rather looks in a database created by the *mkfontdir* program. * font name aliases support The sample server now supports multiple names for a single font. These are stored in a file named `fonts.alias` in each font directory and may refer to any font. This is very useful for providing collections of symbolic names for fonts. * BDF font format now a standard The X Consortium has adopted the BDF font format as a non-exclusive standard. Server vendors are now expected to provide a program for converting BDF files to whatever format is used by their server. The sample server font compiler has been renamed *bdftosnf* and has been fixed to properly generate ink metrics for terminal emulator fonts. * *bdftosnf* and *showsnf* installed The *bdftosnf* and *showsnf* utilities are now installed for public use. * definition of wide arcs changed The definition of wide arcs has been fixed to be a brush centered on and normal to the path described by the arc. The old definition used to draw arcs of non-uniform width. * backing store and save-unders supported The sample server now supports backing store and save-unders. The backing store hooks which were unused in the previous release have changed; server developers should study the new interfaces. * X Toolkit Intrinsics Standard Adopted The X Toolkit Intrinsics (frequently refered to as *Xt*) have been reviewed by the X Consortium and are now part of the X standard. Any vendor that ships *Xlib* is expected to ship *Xt*. Some interface and widget class record changes have been made since the previous release. Sources for the document Converting Widgets from X11 Release 2 to X11 Release 3 may be found in `doc/tutorials/r3widgets.ms`. Applications that used the proper interfaces and data types should simply recompile and work. However, application writers should also read the conversion tutorial as certain programming errors that might not have been visible in previous releases will become noticable in this release. Note that the *Xt* standard does not include a widget set. * Athena widget enhancements A new List widget has been added the Athena widget set. A prototype menu widget that will eventually be added to this set is available in the user-contributed distribution in the directory `contrib/widgets/MenuBox/`. The Athena VendorShell widget now supports specifying icon pixmaps as resources. The text widget now supports selections. * new Miscellaneous Utilities library A library named *Xmu* containing miscellaneous utilities to support the MIT clients has been added. It currently has a variety of X Toolkit converters as well as routines for displaying *Xlib*-like XError messages, drawing rounded rectangles, converting ISO Latin-1 strings to lower case, and reading bitmap files. It is not part of the X standard and is expected to be a repository for generally useful routines. It only uses external interfaces to the standard libraries and should be portable to vendor-supplied platforms. * *Xlib* support for 64bit architectures The internals of *Xlib* have been reworked to support 64 bit machine architectures and Cray supercomputers running UNICOS in particular. Extension writers should look at the new internal interfaces for sending and receiving data. * *Xlib* Property packing semantics clarified The `XGetWindowProperty` and `XChangeProperty` now take care of converting between host data objects (e.g. unsigned char, unsigned short, and unsigned long) and network data objects (e.g. CARD8, CARD16, and CARD32). Applications which store data in or retreive data from properties should also use arrays of host data objects instead of structures. * new routines in *Xlib* The following routines have been added to *Xlib* for accessing data from opaque structures: `XMaxRequestSize`, `XResourceManagerString`, `XDisplayMotionBufferSize`, `XDisplayKeycodes`, and `XVisualIDFromVisual`. * new Display Manager *xdm* A new, portable system for running X and starting user sessions has been added to this release. This Display Manager, called *xdm*, provides a convenient way for sites to run X automatically. Site administrators may easily tailor it provide an wide variety of environments. This new utility superceeds *xterm -L* as well as many uses of *xinit*. Future releases will concentrate on providing even nicer user interfaces. * new utilities Several new utility programs have been provided: *xdpyinfo* for printing out information about a particular display, *xev* for printing out the contents of various events, *xlswins* for listing the windows on a display, *xkill* for getting rid of unwanted windows, *xmag* for enlarging parts of the screen, *xclipboard* for collecting text selections, and *xcutsel* for converting between cut buffers and selections. * xman now supported The *xman* program is now part of the core distribution. Many of the bugs which causes poor performance on some servers have been fixed, making this program one of the prettier demonstrations of the new fonts. * new demos Two new demos have been added: *xeyes* and *maze*. * new features in *xterm* The os-specific portion of *xterm* has been substantially rewritten and now works properly on both BSD and System V derived versions of UNIX. The full translation manager rebinding facilities are supported for both keyboard and VT102-mode pointer input. This includes arbitrary binding of strings to keys (including keys that bind other keys!), making, inserting, and transmitting selections, and popping up of menus. Reverse video has been substantially improved. Several bugs in Tektronix graphics input mode have been fixed. Function keys can now be set to generate Sun keyboard escape sequences instead of ANSI escape sequences. Default settings for various terminal modes are now supported. * rewrite of *x10tox11* The *x10tox11* protocol translator for running X10 binary programs on X11 displays has been completely rewritten. It should be substantially faster and give better results for a larger number of programs. * font path support in *xset* The *xset* utility now supports adding to and deleting from the font directory list. A new keyword *rehash* has been added to the *fp* option to force the server to reread any changed font directories (this is useful after running *mkfontdir* in a directory). * pointer map support in *xmodmap* The *xmodmap* utility has been enhanced to support changing and displaying the pointer map. A new option for displaying the keyboard map has replaced the old *xprkbd* program. * new coversion utilities for bitmap files Two new programs, *bmtoa* and *atobm*, have been provided for converting *bitmap* to and from plain text. They are very useful for generating pictures for including in documents and for creating bitmaps from arbitrary arrays of characters. The *pbm* package in the user-contributed distribution contains a much wider range of tools. * BSD *compress* sources supplied The sources for the BSD *compress* program are now included for those sites that do not already have this program. Starting with this release, some documentation and bitmap images in the user-contributed distribution have been compressed to save space. * public domain *cpp* supplied The sources for a C preprocessor based on Martin Minow's public domain DECUS *cpp* are now included for sites whose native *cpp* cannot handle the server and the X Toolkit. This *cpp* must be built and installed by A/UX 1.0 users. * substitute *soelim* A version of the *soelim* utility for removing `.so filename` directives from troff sources has been provided for systems that do not have one. * sample copyright notice `./COPYRIGHTS` The file `COPYRIGHTS` in the top level directory contains a sample copyright notice recommended for people who are interested in contributing software to the public releases. * X Standards `./STANDARDS` The file `STANDARDS` in the top level directory contains a description of what is and is not part of the X Consortium's standard for the X Window System. ### Changes to the user-contributed distribution The user-contributed distribution is now arranged in a hierarchy similar to the core distribution. Generally useful programs are in `clients`, visually interesting programs are in `demos`, amusements are in `games`, server and client extensions are in `extensions`, server code that has not been integrated into the sample server is in `server`, font conversion utilities and BDF files are in `fonts`, native libraries for building applications are in `toolkits`, X Toolkit widget sets are in `widgets`, and several popular window managers are in `windowmgr`. * old XMenu library removed The old *XMenu* library has been removed from this release. Applications in need of menus should use a toolkit. A prototype X Toolkit menu widget is available in the `contrib/widgets/MenuBox/` directory. * new clients A variety of new programs have been added to the `clients` subdirectory: * a plotting package (*splot*), * a magnifying application (*spy*), * more previewers (*xdvi*, *xpic*, and *xtroff*), * programs for querying the user (*alteryorngs*, *xmessage*, and *xstring*), * a utility for looking up words from the SRI-NIC dictionary server (*xwebster*), * versions of *xpr* for other devices (*hpxpr* and *xipr*), * several programs for configuring your session (*x11startup*, *xbgsun*, *xdvorak*, *xplaces*, *xpref*, and *xtools*), * several tools for displaying images (*pbm* and *xim*), * and a drawing package (*xfig*). * new demos Several striking programs have been added to the `demos` directory: * a multi-screen version of *ico* (*psycho*), * a utility for creating interstellar backgrounds (*spaceout*), * a random slither program (*worm*), * a program for displaying the phase of the moon (*xphoon*), and * a nasty program for demonstrating what ``going technicolor'' really means (*xrotmap*). * fonts A random collection of public domain fonts from the Berkeley Mac Users Group and the INFO-MAC archives have been contributed. BDF versions of many of the X10 fonts have been included as well as the old X11 fonts. * games Several games have been contributed since the last release: the ancient and honorable *mazewar*, the ubiquitous tower of *xhanoi*, two cards games (*xmille* and *xsol*), yet another *xpuzzle*, a version of the video arcade game *qix*, and the infamous *xtrek*. * toolkits New versions of *InterViews*, *Xr11*, and *andrew* along with a prototype implementation of *CLUE Common Lisp User Interface Environment* are available in the `toolkits` directory. * widgets The *HP* and *Sony* widget sets, along with a collection of random, interesting widgets may be found in the *widgets* subdirectory. Since the HP and Sony widgets are temporarily based on the R2 Intrinsics, a version of *Xt* compatible with the previous release is provided in the `contrib/widgets/Xhp/Xt/` subdirectory. * windowmgrs Relatively recent versions of the *awm*, *rtl*, *twm* and *wm* window managers are available in the `windowmgrs` subdirectory. Their interoperability with R3 core clients has not been tested. *We hope you enjoy Release 3.*

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 the Hewlett-Packard Company; Domain is a trademark of Apollo Computer; PostScript is a trademark of Adobe Systems, Inc.; A/UX is a trademark of Apple Computer; UNICOS is a trademark of Cray Research; AOS is a trademark of the IBM Corporation; UNIX is a registered trademark of AT&T Bell Laboratories; Times, Helvetica, and New Century Schoolbook are registered trademarks of Linotype; and Charter is a registered trademark of Bitstream, Inc.