XXXX WWWWiiiinnnnddddoooowwww SSSSyyyysssstttteeeemmmm,,,, VVVVeeeerrrrssssiiiioooonnnn 11111111 RRRReeeelllleeeeaaaasssseeee 4444 RRRReeeelllleeeeaaaasssseeee NNNNooootttteeeessss Jim Fulton X Consortium MIT Laboratory for Computer Science _A_B_S_T_R_A_C_T The X Window System is a portable, network- transparent window system originally developed at MIT. It can be used on a wide variety of raster display devices, ranging from from simple mono- chrome frame buffers to deep, true color graphics processors. This document describes contents of the fourth public release of X, Version 11 from MIT and how it has changed from previous releases. _1. _O_v_e_r_v_i_e_w This is the fourth release of the X Window System, Version 11 from MIT. Substantial progress has been made in optimiz- ing the sample server, window manager, and programming libraries. In addition, major improvements to the user interface of several of the key applications (in particular, _x_m_h, _t_w_m, _x_m_a_n, and _x_t_e_r_m) should make release noticably nicer to use. Sample implementations of the various new Consortium Standards are included as well as prototype implementations of several efforts currently under develop- ment. No incompatible changes have been made to either the core Protocol or to the _X_l_i_b programming library. The _X_t _I_n_t_r_i_n_s_i_c_s should be source compatible with the previous release. Changes have been made to the _X_a_w widget set, but a configuration option for providing backwards compatibility interfaces is available. Several new sets of fonts have been added: a new fixed width family of fonts, a Kanji and Kana font, the Lucida family from Bigelow & Holmes and Sun Microsystems, a terminal emu- lator font from Digital Equipment Corporation, and 100 dots-per-inch (dpi) versions of all 75dpi fonts. _________________________ _X _W_i_n_d_o_w _S_y_s_t_e_m is a trademark of MIT. Copyright 8c9 1989 by the Massachusetts Institute of XXXX WWWWiiiinnnnddddoooowwww SSSSyyyysssstttteeeemmmm RRRReeeelllleeeeaaaasssseeee NNNNooootttteeeessss XXXX,,,, VVVVeeeerrrrssssiiiioooonnnn 11111111,,,, RRRReeeelllleeeeaaaasssseeee 4444 ---- 2222 ---- This release contains two types of software: that which is supported by the staff of the X Consortium and which forms the core of the X Window System, and that which has been contributed by the user community and is provided as a pub- lic service without support from MIT. The core distribution also contains public implementations of certain software management utilities that may not be available on all plat- forms (such as _p_a_t_c_h and a _c_p_p that can handle large numbers of symbols) as well as the tools that are used to build X software. The servers, libraries, and applications provided in this release are _s_a_m_p_l_e rather than _r_e_f_e_r_e_n_c_e implementations. The X Consortium standardizes specifications, not particular instances of code. In particular, the document _X _W_i_n_d_o_w _S_y_s_t_e_m _P_r_o_t_o_c_o_l, _V_e_r_s_i_o_n _1_1 is the final authority on what is and is not part of the core X Window System protocol. For additional information, see the _X_S_t_a_n_d_a_r_d_s(_1) manual page. Since the last release, the X Consortium has made signifi- cant additions to the Xlib standard (see _m_i_t/_d_o_c/_X_l_i_b/_R_4_X_l_i_b._t_b_l._m_s) and to the X Toolkit Intrinsics standard, and has approved the following specifications as new standards: _I_n_t_e_r-_C_l_i_e_n_t _C_o_m_m_u_n_i_c_a_t_i_o_n_s _C_o_n_v_e_n_t_i_o_n_s _M_a_n_u_a_l The Inter-Client Communications Conventions Manual (ICCCM, whose specification may be found in _m_i_t/_d_o_c/_I_C_C_C_M/_i_c_c_c_m._t_b_l._m_s) establishes a set of conventions that allow clients to cooperate in the areas of selections, cut buffers, window manage- ment, session management, and resources. Program- ming interfaces have been added to both _X_l_i_b and _________________________ Technology. Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted without fee, 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. This software is not subject to any license of the American Telephone and Telegraph Company or of the Regents of the University of California. XXXX WWWWiiiinnnnddddoooowwww SSSSyyyysssstttteeeemmmm RRRReeeelllleeeeaaaasssseeee NNNNooootttteeeessss XXXX,,,, VVVVeeeerrrrssssiiiioooonnnn 11111111,,,, RRRReeeelllleeeeaaaasssseeee 4444 ---- 3333 ---- the _X_t _I_n_t_r_i_n_s_i_c_s to simplify the task of writing compliant applications. The core _t_w_m window manager, as well as the user-contributed _g_w_m, _o_l_w_m, and _t_e_k_w_m window managers, is intended to be be compliant. _X_1_1 _N_o_n-_r_e_c_t_a_n_g_u_l_a_r _W_i_n_d_o_w _S_h_a_p_e _E_x_t_e_n_s_i_o_n The SHAPE extension (whose specification may be found in _m_i_t/_d_o_c/_e_x_t_e_n_s_i_o_n_s/_s_h_a_p_e._m_s) provides non-rectangular, disjoint windows. Samples of its use may be found in the _X_a_w CCCCoooommmmmmmmaaaannnndddd and MMMMaaaaiiiillllbbbbooooxxxx widgets, in the _t_w_m window manager, and in the _o_c_l_o_c_k and _x_e_y_e_s clients. _X _D_i_s_p_l_a_y _M_a_n_a_g_e_r _C_o_n_t_r_o_l _P_r_o_t_o_c_o_l The X Display Manager Control Protocol (XDMCP) (whose specification may be found in _m_i_t/_d_o_c/_X_D_M_C_P/_x_d_m_c_p._m_s) is a datagram-based proto- col for managing remote displays (particularly X terminals) in a network. Implementations of the various elements of the protocol are provided in the sample server and the _x_d_m display manager. _C_o_m_p_o_u_n_d _T_e_x_t _E_n_c_o_d_i_n_g Compound Text (whose specification may be found in _m_i_t/_d_o_c/_C_T_E_X_T/_c_t_e_x_t._t_b_l._m_s) is an interchange for- mat for multiple character set data such as multi-lingual text. It is based on ISO standards for encoding and combining characters and is intended to be used in the following contexts: inter-client communication using selections, win- dow properties, and resources. Routines for pars- ing Compound Text may be found in _m_i_t/_l_i_b/_X_m_u/_X_c_t._c. _X _L_o_g_i_c_a_l _F_o_n_t _D_e_s_c_r_i_p_t_i_o_n _C_o_n_v_e_n_t_i_o_n_s The X Logical Font Description Conventions (XLFD, whose specification may be found in _m_i_t/_d_o_c/_X_L_F_D/_x_l_f_d._t_b_l._m_s) are a set of guidelines for naming fonts and font properties such that fonts can be uniquely named and queried in a con- sistent manner by applications. All of the text fonts in the core distribution follow the XLFD conventions. In addition, the new _x_f_o_n_t_s_e_l pro- gram can be used to view and select fonts that have XLFD names. This release been built on the following operating systems: Ultrix 3.1 (both VAX and RISC), SunOS 4.0.3, HP-UX 6.5, Domain/OS 10.1, A/UX 1.1, AIX RT-2.2 and PS/2-1.1, AOS-4.3, UTEK 4.0, NEWS-OS 3.2, UNICOS 5.0.1, and UNIX System V, Release 3.2 (AT&T 6386 WGS). It should work correctly, or with a minor amount of work, on a variety of other systems as well. Before building the release, see the _R_E_A_D_M_E files XXXX WWWWiiiinnnnddddoooowwww SSSSyyyysssstttteeeemmmm RRRReeeelllleeeeaaaasssseeee NNNNooootttteeeessss XXXX,,,, VVVVeeeerrrrssssiiiioooonnnn 11111111,,,, RRRReeeelllleeeeaaaasssseeee 4444 ---- 4444 ---- in _m_i_t/_c_o_n_f_i_g/ and _m_i_t/_s_e_r_v_e_r/_d_d_x/*/, for any special instructions. _2. _B_u_i_l_d_i_n_g _t_h_e _R_e_l_e_a_s_e The software in this release is divided into two distribu- tions: one for the _c_o_r_e software that is supported by the staff of the X Consortium (located in the directory tree ./_m_i_t/), and one for _u_s_e_r-_c_o_n_t_r_i_b_u_t_e_d software containing everything else (located in the directory tree ./_c_o_n_t_r_i_b/). Great pains have been taken to make the core distribution easy to reconfigure, build and install on a wide range of platforms. The user-contributed distribution, on the other hand, has not been compiled or tested by the staff of the X Consortium and will require building by hand. With the addition of function prototypes in the Xlib include files, it is virtually certain that some user-contributed will fail to compile under picky compilers (such as _h_c). Almost all _M_a_k_e_f_i_l_e_s in the core software are generated automatically by a utility called _i_m_a_k_e. The program com- bines machine-independent descriptions (called _I_m_a_k_e_f_i_l_e_s) of targets to be built with machine-dependent sets of param- eters. Initial versions of all of the _M_a_k_e_f_i_l_e_s are included for those sites that cannot use _i_m_a_k_e (they will undoubtedly require patching for specific machines). How- ever, on many systems, X should build correctly right off the tape. For the user-contributed distribution, and for your own applications, the _x_m_k_m_f script in _m_i_t/_u_t_i_l/_s_c_r_i_p_t_s/ can be used to build a _M_a_k_e_f_i_l_e from an _I_m_a_k_e_f_i_l_e once the core has been built and installed. _2._1. _I_n_s_t_a_l_l_a_t_i_o_n _S_u_m_m_a_r_y To load and install this release of the X Window System, you _________________________ |= Ultrix and VAX are trademarks of Digital Equipment Corporation; SunOS is a trademark of Sun Microsystems, Inc.; HP-UX and Domain are trademarks of the Hewlett- Packard Company; PostScript is a trademark of Adobe Systems, Inc.; A/UX is a trademark of Apple Computer; UNICOS is a trademark of Cray Research; AIX and AOS are trademarks of the IBM Corporation; UNIX is a registered trademark of AT&T Bell Laboratories; OPEN LOOK is a trademark of AT&T; Times, Helvetica, and New Century Schoolbook are registered trademarks of Linotype; Lucida is a registered trademark of Bigelow & Holmes; and Charter is a registered trademark of Bitstream, Inc. XXXX WWWWiiiinnnnddddoooowwww SSSSyyyysssstttteeeemmmm RRRReeeelllleeeeaaaasssseeee NNNNooootttteeeessss XXXX,,,, VVVVeeeerrrrssssiiiioooonnnn 11111111,,,, RRRReeeelllleeeeaaaasssseeee 4444 ---- 5555 ---- will need to: 1. Finish reading these Release Notes. 2. Create a directory into which you will read the distri- bution tapes (usually named something like /_u_s_r/_l_o_c_a_l/_s_r_c/_X or /_s_r_c/_R_4/). You will need roughly 50 megabytes to hold the core software and up to 90 megabytes for the user-contributed software. Note that compiling will require anywhere from 50 to 110% more disk space, depending on your machine (e.g. RISC vs. CISC and whether or not you have shared libraries). 3. Unload the core tape into the directory created in step #2. Since the user-contributed software must be built by hand, you may wait and load it in later. Each of the tapes contains one (very large) UNIX _t_a_r file stored at 1600 bits per inch. 4. Read the file _m_i_t/_c_o_n_f_i_g/_R_E_A_D_M_E for instructions on how to configure the build for your particular site. Also, make sure that you follow the directions in _R_E_A_D_M_E files in _m_i_t/_s_e_r_v_e_r/_d_d_x/ directories for which you plan to build servers. In particular, you must make sure that the _O_S_M_a_j_o_r_V_e_r_s_i_o_n and _O_S_M_i_n_o_r_V_e_r_s_i_o_n configura- tion parameters, as well as those indicated at the top of _m_i_t/_c_o_n_f_i_g/_s_i_t_e._d_e_f, are appropriate for your sys- tem. 5. If you plan to compile the release on more than one machine and have a distributed file system, you may wish to use the script _m_i_t/_u_t_i_l/_s_c_r_i_p_t_s/_l_n_d_i_r._s_h to create symbolic link trees on each of the target machines. This allows all of the platforms on which you wish to run X to share a single set of sources. In either case, the phrase _b_u_i_l_d _t_r_e_e will be used to refer to the directory tree in which you are compiling (to distinguish it from the _s_o_u_r_c_e _t_r_e_e which contains the actual files). 6. If you are building on a Macintosh II, make sure you read the file _m_i_t/_s_e_r_v_e_r/_d_d_x/_m_a_c_I_I/_R_E_A_D_M_E and follow the directions for running the _X_1_1_R_4 script in that directory. If you are using GNUC on the Mac (highly recommended; sources are available for anonymous ftp from the machine _a_p_p_l_e._c_o_m), you will need to remove the "-_s" flag on the _e_g_r_e_p command in the GNUC _f_i_x_i_n_- _c_l_u_d_e_s script. Otherwise, you will have to build and install the C preprocessor in _m_i_t/_u_t_i_l/_c_p_p/. 7. If you are running on a VAX or 680x0 processor, you should consider using the GNU C compiler (available via anonymous ftp from the machine _p_r_e_p._a_i._m_i_t._e_d_u) to com- pile the server. It can result in up to a factor of 2 XXXX WWWWiiiinnnnddddoooowwww SSSSyyyysssstttteeeemmmm RRRReeeelllleeeeaaaasssseeee NNNNooootttteeeessss XXXX,,,, VVVVeeeerrrrssssiiiioooonnnn 11111111,,,, RRRReeeelllleeeeaaaasssseeee 4444 ---- 6666 ---- improvement in performance. See the _H_a_s_G_c_c parameter in the files _s_u_n._c_f, _u_l_t_r_i_x._c_f, _m_a_c_I_I._c_f, and _s_i_t_e._d_e_f in _m_i_t/_c_o_n_f_i_g/ 8. Check the _i_m_a_k_e configuration parameters in _m_i_t/_c_o_n_f_i_g/_i_m_a_k_e_m_d_e_p._h and _m_i_t/_c_o_n_f_i_g/_I_m_a_k_e._t_m_p_l. 9. Once you are satisfied with the configuration, you are ready to build the core distribution. Look at the ._c_f file for your system. There may be a line in it that sets an _m_a_k_e variable named _B_o_o_t_s_t_r_a_p_C_F_l_a_g_s. If you don't find such a variable, you can use the following command to start the build: % make World >& make.world & If you do find the variable, you should append that definition to the command line, using the _m_a_k_e variable BOOTSTRAPCFLAGS. This is used by _i_m_a_k_e to set particu- lar _c_p_p symbols for all compiles (if you are porting to a different platform, see _m_i_t/_u_t_i_l/_i_m_a_k_e/_i_m_a_k_e_m_d_e_p._h). Special BOOTSTRAPCFLAGS are required on the following systems for which ._c_f files are supplied: MacII, AT&T 6386, IBM workstations, and the Tektronix 4310 series. For example: % make BOOTSTRAPCFLAGS=-DmacII World >& make.world & Do not call the output file _m_a_k_e._l_o_g as the _m_a_k_e _c_l_e_a_n done by _m_a_k_e _W_o_r_l_d removes all files of this name. This will rebuild all of the _M_a_k_e_f_i_l_e_s and execute a _m_a_k_e -_k _a_l_l to compile everything in the core distribu- tion. This will take anywhere from 15 minutes (on a Cray Y-MP) to 12 hours, depending on your machine. 10. When the _m_a_k_e is done, check the log file for any prob- lems. There should be no serious errors. A/UX _p_c_c users can ignore compiler warnings about enumeration type clashes, and Apollo and IBM users can ignore optimizer warnings. Most optimizers will also give warnings about the C code that is generated by _l_e_x and _y_a_c_c in _m_i_t/_c_l_i_e_n_t_s/_t_w_m; these may be safely ignored. 11. If you are satisfied that everything has built correctly, test the various critical programs (servers, _x_t_e_r_m, _x_i_n_i_t, etc.) by hand. You may need to be root to run the server or _x_t_e_r_m. A second workstation or terminal will be particularly useful if you run into problems. 12. Make backup copies of your old X header files, binaries, fonts, libraries, etc. 13. Go to the top of the build tree and type XXXX WWWWiiiinnnnddddoooowwww SSSSyyyysssstttteeeemmmm RRRReeeelllleeeeaaaasssseeee NNNNooootttteeeessss XXXX,,,, VVVVeeeerrrrssssiiiioooonnnn 11111111,,,, RRRReeeelllleeeeaaaasssseeee 4444 ---- 7777 ---- # make install >& make.install You will either have to do this as root, or have write access to the appropriate directories (see DIRS_TO_BUILD in the top level _I_m_a_k_e_f_i_l_e and _m_i_t/_c_o_n_f_i_g/_I_m_a_k_e._t_m_p_l). The _x_t_e_r_m program should be installed setuid to root on most systems and the _x_l_o_a_d program should be installed setgid to whichever group the file /_d_e_v/_k_m_e_m belongs to (it is installed setuid to root by default). 14. If you would like to install the manual pages, type the following at the top of the build tree: # make install.man 15. If you would like to create and install lint libraries, type the following at the top of the build tree: % make install.ln If you are installing X for the first time, you may also need to do some of the steps listed below. Check the vari- ous README files in the _m_i_t/_s_e_r_v_e_r/_d_d_x directories for addi- tional instructions. 16. Add device drivers or reconfigure your kernel. 17. Create additional pseudoterminals. See your operating system script /_d_e_v/_M_A_K_E_D_E_V and site administrator for details. 18. Read the manual page for the Display Manager _x_d_m and configure it for your site. This program provides a portable way of running X automatically and has many hooks for creating a nice interface for novice users. WWWWaaaarrrrnnnniiiinnnngggg:::: tttthhhheeee ----LLLL ffffllllaaaagggg iiiissss nnnnoooo lllloooonnnnggggeeeerrrr ssssuuuuppppppppoooorrrrtttteeeedddd bbbbyyyy xxxxtttteeeerrrrmmmm.... IIIIffff yyyyoooouuuu aaaarrrreeee rrrruuuunnnnnnnniiiinnnngggg xxxxtttteeeerrrrmmmm ffffrrrroooommmm ////eeeettttcccc////iiiinnnniiiitttt yyyyoooouuuu wwwwiiiillllllll hhhhaaaavvvveeee ttttoooo ccccoooonnnnvvvveeeerrrrtttt ttttoooo xxxxddddmmmm oooorrrr eeeellllsssseeee ssssaaaavvvveeee yyyyoooouuuurrrr oooolllldddd bbbbiiiinnnnaaaarrrryyyy.... 19. Make sure that all X11 users have the directory /_u_s_r/_b_i_n/_X_1_1 in their search paths. 20. Give it a try! Release 4 of Version 11 of the X Window System should now be ready to use. XXXX WWWWiiiinnnnddddoooowwww SSSSyyyysssstttteeeemmmm RRRReeeelllleeeeaaaasssseeee NNNNooootttteeeessss XXXX,,,, VVVVeeeerrrrssssiiiioooonnnn 11111111,,,, RRRReeeelllleeeeaaaasssseeee 4444 ---- 8888 ---- _2._2. _O_p_e_r_a_t_i_n_g _S_y_s_t_e_m _R_e_q_u_i_r_e_m_e_n_t_s One of the reasons why X is so popular is that it does not require very much operating system support. Although this distribution only contains sample implementations for BSD and UNIX derivative platforms, support for other operating systems is available from a wide variety of vendors. The servers in this release have been built on the following systems: Ultrix 3.1 (both VAX and RISC) SunOS 4.0.3 HP-UX 6.5 Domain/OS 10.1 A/UX 1.1 AIX RT-2.2 and PS/2-1.1 IBM AOS-4.3 UTEK 4.0 The client libraries and applications have been built on all of the above systems, plus: NEWS-OS 3.2 UNICOS 5.0.1 UNIX System V, Release 3.2 (AT&T 6386 WGS) If you are using versions prior to these, you may well run into trouble. In particular, the server will not run on IBM 4.2A release 2 and there is no longer support for Apollo SR9.7. The _R_E_A_D_M_E files in the various _m_i_t/_s_e_r_v_e_r/_d_d_x/ describe particular requirements such as compilers, libraries, preprocessors, etc. As was noted above, A/UX 1.0 users will need to build a new version of the C preproces- sor. You should verify that your networking and interprocess com- munication facilities are working properly before trying to use X. If programs such as _t_a_l_k and _r_l_o_g_i_n don't work, X probably won't either. _2._3. _R_e_a_d_i_n_g _i_n _t_h_e _R_e_l_e_a_s_e _T_a_p_e_s This release may be obtained electronically from the Inter- net, the UUNET Project, several consulting firms, and vari- ous UUCP archive sites. In addition, a set of 2400 foot, 1600 BPI magnetic tapes (MIT does not distribute on car- tridge tapes or floppy disks) and printed documentation is available from the MIT Software Center; call (617) 258-8330 for details. Each tape from MIT contains one large _t_a_r archive with software and documentation for part of the release. If you have a limited amount of disk space, you should load tape XXXX WWWWiiiinnnnddddoooowwww SSSSyyyysssstttteeeemmmm RRRReeeelllleeeeaaaasssseeee NNNNooootttteeeessss XXXX,,,, VVVVeeeerrrrssssiiiioooonnnn 11111111,,,, RRRReeeelllleeeeaaaasssseeee 4444 ---- 9999 ---- #1, prune out any servers that you don't need, and generate listings of the user-contributed tapes for later retrieval. In particular, you will probably want to extract the _m_i_t/_d_o_c directory from tape #2. All filenames are given as relative paths (i.e. beginning with a period instead of a slash) so that the release may be placed anywhere in your file system. Before reading in the tapes, make sure that you have enough disk space. Each of the tapes contains roughly 35 mega- bytes, split as follows: _T_a_p_e # _C_o_n_t_e_n_t_s _S_t_a_t_u_s 1 core software for _m_a_k_e _W_o_r_l_d required 2 core docs and contrib clients recommended 3 contrib libs and toolkits optional 4 contrib Andrew and games optional The compiled versions of the programs will occupy yet again as much disk space (particularly on RISC machines without shared libraries), so plan accordingly. Create a directory into which you will put all of the sources. In this directory, execute the appropriate operat- ing system commands to read in the core tapes. If your site is set up so that _t_a_r uses a 1600bpi tape drive by default, you will probably type something like: % mkdir /usr/local/src/X % cd /usr/local/src/X % tar xv See your system administrator for help. _2._4. _U_s_i_n_g _S_y_m_b_o_l_i_c _L_i_n_k_s This release uses links (symbolic, on machines that support them) in several places to avoid duplication of certain files (mostly header files). If you are building this release on a system for which configuration files have not been supplied, you should check the LN configuration parame- ter in the appropriate _m_i_t/_c_o_n_f_i_g/*._c_f file. If your operating system does not support soft links, LN should be set either to create hard links or to copy the source file. If you need to move the release to another machine after it has been built, use _t_a_r instead of _c_p or _r_c_p so that you preserve dates and links. This is usually done with a com- mand of the form: XXXX WWWWiiiinnnnddddoooowwww SSSSyyyysssstttteeeemmmm RRRReeeelllleeeeaaaasssseeee NNNNooootttteeeessss XXXX,,,, VVVVeeeerrrrssssiiiioooonnnn 11111111,,,, RRRReeeelllleeeeaaaasssseeee 4444 ---- 11110000 ---- % (chdir /usr/local/src/X; tar cf - .) | rsh othermachine "(chdir /moredisk/X; tar xpBf -)" See your system administrator for help. _2._5. _C_o_n_f_i_g_u_r_i_n_g _t_h_e _R_e_l_e_a_s_e This release makes extensive use of a utility called _i_m_a_k_e to generate machine-specific _M_a_k_e_f_i_l_e_s from machine- independent _I_m_a_k_e_f_i_l_e_s. Another utility, called _m_a_k_e_d_e_p_e_n_d, is used to generate _M_a_k_e_f_i_l_e dependencies for C language files. Sample _M_a_k_e_f_i_l_e_s are provided, although you are strongly urged to use _i_m_a_k_e and _m_a_k_e_d_e_p_e_n_d so that your software works across releases. The configuration files for _i_m_a_k_e are located in the direc- tory _m_i_t/_c_o_n_f_i_g/. _M_a_k_e_f_i_l_e_s are created from a template file named _I_m_a_k_e._t_m_p_l, a machine-specific ._c_f file, and a site-specific _s_i_t_e._d_e_f file. With only a few exceptions, configuration parameters are _c_p_p symbols that may be defined on a per-server basis or for all servers in a given site. The template file should _n_o_t be modified. The file _m_i_t/_c_o_n_f_i_g/_R_E_A_D_M_E describes each of the build parameters. The defaults have been chosen to work properly on a wide range of machines and to be easy to maintain. An overview of the configuration system may be found in the file _m_i_t/_d_o_c/_c_o_n_f_i_g/_u_s_e_n_i_x_w_s/_p_a_p_e_r._m_s. Site-specific confi- gurations should be described in the file _s_i_t_e._d_e_f using the following syntax: #ifndef _B_u_i_l_d_P_a_r_a_m_e_t_e_r #define _B_u_i_l_d_P_a_r_a_m_e_t_e_r _s_i_t_e-_s_p_e_c_i_f_i_c-_v_a_l_u_e #endif _2._6. _C_o_m_p_i_l_i_n_g _t_h_e _R_e_l_e_a_s_e Once the configuration parameters are set, you should be able to type the following command at the top of the build tree to compile the core software: % make World >& make.world & Remember to set BOOTSTRAPCFLAGS if your system needs it. Don't redirect the output to _m_a_k_e._l_o_g as this particular file is deleted as part of the build process. This will take anywhere up to 24 hours, depending on the machine used, and should complete without any significant errors on most machines. XXXX WWWWiiiinnnnddddoooowwww SSSSyyyysssstttteeeemmmm RRRReeeelllleeeeaaaasssseeee NNNNooootttteeeessss XXXX,,,, VVVVeeeerrrrssssiiiioooonnnn 11111111,,,, RRRReeeelllleeeeaaaasssseeee 4444 ---- 11111111 ---- If you need to restart the build after all of the _M_a_k_e_f_i_l_e_s and dependencies have been created, type the following com- mand at the top of the build tree: % make -k >& make.out & If you later decide to change any of the configuration parameters, you'll need to do another full _m_a_k_e _W_o_r_l_d. _2._7. _I_n_s_t_a_l_l_i_n_g _t_h_e _R_e_l_e_a_s_e If everything compiles successfully, you may install the software by typing the following as root from the top of the build tree: # make install If you would rather not do the installation as root, make the necessary directories writable by you and do the install from your account. Then, check the ownership and protec- tions on _x_t_e_r_m and _x_l_o_a_d in the BINDIR directory (usually /_u_s_r/_b_i_n/_X_1_1/): on most systems _x_t_e_r_m must be installed setuid to root so that it can set the ownership of its pseu- doterminal and update /_e_t_c/_u_t_m_p, and _x_l_o_a_d needs to be setuid to root or setgid to the group owning the file /_d_e_v/_k_m_e_m so that it can get the system load average. If your /_e_t_c/_t_e_r_m_c_a_p and /_u_s_r/_l_i_b/_t_e_r_m_i_n_f_o databases don't have entries for _x_t_e_r_m, sample entries are provided in the directory _m_i_t/_c_l_i_e_n_t_s/_x_t_e_r_m/. System V users may need to compile and install the _t_e_r_m_i_n_f_o entry with the _t_i_c utility. If you plan to use the _x_i_n_i_t program to run X, you should create a link named _X pointing to the appropriate server program (usually named something like _X_m_a_c_h_i_n_e in the direc- tory /_u_s_r/_b_i_n/_X_1_1/). However, _x_i_n_i_t is not intended for most users; instead, site administrators are expected to either configure _x_d_m or provide user-friendly interfaces. If you would like to have manual pages installed, check the _M_a_n_D_i_r_e_c_t_o_r_y_R_o_o_t, _M_a_n_D_i_r and _L_i_b_M_a_n_D_i_r configuration parame- ters in _m_i_t/_c_o_n_f_i_g/ and type the following at the top of the build tree: # make install.man If you would like to have lint libraries created and installed, type the following at the top of the build tree: # make install.ln XXXX WWWWiiiinnnnddddoooowwww SSSSyyyysssstttteeeemmmm RRRReeeelllleeeeaaaasssseeee NNNNooootttteeeessss XXXX,,,, VVVVeeeerrrrssssiiiioooonnnn 11111111,,,, RRRReeeelllleeeeaaaasssseeee 4444 ---- 11112222 ---- Finally, make sure that all users have the BINDIR (usually /_u_s_r/_b_i_n/_X_1_1/) in their PATH environment variable. _2._8. _N_o_t_e_s _o_n _K_e_r_n_e_l_s _a_n_d _S_p_e_c_i_a_l _F_i_l_e_s On some machines, it may be necessary to rebuild the kernel with a new device driver, or to at least reconfigure it. If you have never run X before and are using a system not listed in these notes, you might need verify that the CSR addresses in your kernel configuration file match your hardware. In addition, you should make sure that the kernel autoconfigures the display when booting. You may need to create special devices for your display, mouse, or keyboard. For example, # MAKEDEV cgfour # for Sun 3/60 # MAKEDEV displays # for displays on the RT/PC The protection modes on the display device files should be set so that only the server can open them. If the server is started by /_e_t_c/_i_n_i_t, the protections can be root read/write, everyone else no access; otherwise, they will have to be read/write for everyone or else your server will have to be setuid to root. On a Digital QVSS (VAXStation II) under older versions of Ultrix, you may need to use _a_d_b to make sure that the kernel variable _q_v__d_e_f__s_c_r_n is set to 2 so that the full width of the VR-260 monitor is used (otherwise there will be an unused black strip down the right edge of the screen). This can be done by changing the value either in /_v_m_u_n_i_x directly or in /_s_y_s/_v_a_x_u_b_a/_q_v._o and relinking and reinstalling the kernel. You will need to reboot for the new value to take effect. For more information, see the appropriate _R_E_A_D_M_E files and manual pages in the _m_i_t/_s_e_r_v_e_r/_d_d_x/ directories. _2._9. _T_e_s_t_i_n_g _t_h_e _R_e_l_e_a_s_e Even if you plan on using _x_d_m to run X all the time, you should first run it by hand from another terminal to check that everything is installed and working properly. Error messages from the X server will then appear on your termi- nal, rather than being written to the _x_d_m-_e_r_r_o_r_s or to /_u_s_r/_a_d_m/_X?_m_s_g_s (where ? is the number of the display). The easiest way to test the server is to go to /_u_s_r/_b_i_n/_X_1_1 (or wherever you have installed the various X programs), and XXXX WWWWiiiinnnnddddoooowwww SSSSyyyysssstttteeeemmmm RRRReeeelllleeeeaaaasssseeee NNNNooootttteeeessss XXXX,,,, VVVVeeeerrrrssssiiiioooonnnn 11111111,,,, RRRReeeelllleeeeaaaasssseeee 4444 ---- 11113333 ---- run _x_i_n_i_t as follows: % cd /usr/bin/X11 % xinit If all is well, you should see a gray stipple pattern cover- ing the screen, a cursor shaped like an ``X'' that tracks the pointer, and a terminal emulator window. Otherwise, check the following: 1. If the gray background doesn't appear at all, check the permissions on any special device files (usually stored in /_d_e_v/) described in the _R_E_A_D_M_E in the appropriate _m_i_t/_s_e_r_v_e_r/_d_d_x/ subdirectories. 2. If the background appears, but the cursor is a white square that doesn't change, make sure that the fonts have been installed (in particular, the font named _c_u_r_s_o_r._s_n_f in the directory /_u_s_r/_l_i_b/_X_1_1/_f_o_n_t_s/_m_i_s_c/; see the configuration parameter _D_e_f_a_u_l_t_F_o_n_t_P_a_t_h). Also make sure that there is a file named _f_o_n_t_s._d_i_r in each font directory. This file is created by the _m_k_f_o_n_t_d_i_r program and is used by the server to find fonts in a directory. 3. If the cursor appears but doesn't track the pointer, make sure that any special device files (often named something like /_d_e_v/_m_o_u_s_e) are installed (see the server's _R_E_A_D_M_E file). 4. If the server starts up and then goes black a few seconds later, the initial client (usually _x_t_e_r_m or _x_d_m) is dying. Make sure that _x_t_e_r_m is installed setuid to root and that you have created enough pseu- doterminals. If you are running _x_i_n_i_t, and have a file named ._x_i_n_i_t_r_c in your home directory, make sure that it is executable and that the last program that it starts is run in the foreground (i.e. that there is no ampersand at the end of the line). Otherwise, the ._x_i_n_i_t_r_c will finish immediately, which _x_i_n_i_t assumes means that you are through. Once you have the initial window working properly, try run- ning some other programs from the _x_t_e_r_m. To position a new window with the _t_w_m window manager, press Button1 (usually the left-most button on the pointer) when the flashing rec- tangle appears: XXXX WWWWiiiinnnnddddoooowwww SSSSyyyysssstttteeeemmmm RRRReeeelllleeeeaaaasssseeee NNNNooootttteeeessss XXXX,,,, VVVVeeeerrrrssssiiiioooonnnn 11111111,,,, RRRReeeelllleeeeaaaasssseeee 4444 ---- 11114444 ---- % xclock -g 200x200-0+0 & % twm & % xlogo & % xeyes & ... X should now be ready to use. Read the manual pages for the new programs, look at the new fonts, and have fun. _2._1_0. _C_r_e_a_t_i_n_g _E_x_t_r_a _P_s_e_u_d_o_t_e_r_m_i_n_a_l_s Since each _x_t_e_r_m will need a separate pseudoterminal, you should create a large number of them (you probably will want at least 32 on a small, multiuser system). Each pty has two devices, a master and a slave, which are usually named /dev/tty[pqrstu][0-f] and /dev/pty[pqrstu][0-f]. If you don't have at least the ``p'' and ``q'' lines configured (do an ``ls /dev''), you should have your system administrator add them. This is often done by running the MAKEDEV script in /_d_e_v: # cd /dev # ./MAKEDEV pty0 # ./MAKEDEV pty1 _2._1_1. _S_t_a_r_t_i_n_g _X _f_r_o_m /_e_t_c/_r_c The X Display Manager is used to run the X server and ini- tial login window. It is normally started from the system startup file /_e_t_c/_r_c, and is designed to be easily tailored to the needs of each specific site. _X_d_m takes care of keep- ing the server running, prompting for username and password and managing the user's session. The sample configuration currently uses shell scripts to provide a fairly simple environment. This will be an area of continuing work in future releases. The key to _x_d_m's flexibility is its extensive use of resources, allowing site administrators to quickly and easily test alternative setups. When _x_d_m starts up, it reads a configuration file (the default is /_u_s_r/_l_i_b/_X_1_1/_x_d_m/_x_d_m-_c_o_n_f_i_g but can be specified with the -_c_o_n_f_i_g command line flag) listing the names of the various datafiles, default parameters, and startup and shutdown pro- grams to be run. Because it uses the standard X Toolkit resource file format, any parameters that may be set in the _x_d_m-_c_o_n_f_i_g file may also be specified on the command line using the standard -_x_r_m option. XXXX WWWWiiiinnnnddddoooowwww SSSSyyyysssstttteeeemmmm RRRReeeelllleeeeaaaasssseeee NNNNooootttteeeessss XXXX,,,, VVVVeeeerrrrssssiiiioooonnnn 11111111,,,, RRRReeeelllleeeeaaaasssseeee 4444 ---- 11115555 ---- The default configuration contains the following lines: DisplayManager.servers: /usr/lib/X11/xdm/Xservers DisplayManager.errorLogFile: /usr/lib/X11/xdm/xdm-errors DisplayManager*resources: /usr/lib/X11/xdm/Xresources DisplayManager*startup: /usr/lib/X11/xdm/Xstartup DisplayManager*session: /usr/lib/X11/xdm/Xsession DisplayManager*reset: /usr/lib/X11/xdm/Xreset The _m_i_t/_s_e_r_v_e_r_s file contains the list of servers to start. The _e_r_r_o_r_L_o_g_F_i_l_e is where output from _x_d_m is redirected. The _r_e_s_o_u_r_c_e_s file contains default resources for the _x_d_m login window. In particular, this is where special key sequences can be specified (in the _x_l_o_g_i_n*_l_o_g_i_n._t_r_a_n_s_l_a_t_i_o_n_s resource). The _s_t_a_r_t_u_p file should be a program or execut- able script that is run after the user has provided a valid password. It is a hook for doing site-specific initializa- tion, logging, etc. The _s_e_s_s_i_o_n entry is the name of a ses- sion manager program or executable script that is run to start up the user's environment. A simple version has been supplied that provides an _x_t_e_r_m window and _t_w_m window manager if the user does not have an executable ._x_s_e_s_s_i_o_n file in his or her home directory. Finally, the _r_e_s_e_t pro- gram or executable script is run after the user logs out. It is a hook for cleaning up after the _s_t_a_r_t_u_p program. To run _x_d_m using the default configuration, add the follow- ing line to your system boot file (usually named /_e_t_c/_r_c or /_e_t_c/_r_c._l_o_c_a_l): /usr/bin/X11/xdm Most sites will undoubtedly want to build their own confi- gurations. We recommend that you place any site-specific _x_d_m-_c_o_n_f_i_g and other _x_d_m files in a different directory so that they are not overwritten if somebody ever does a _m_a_k_e _i_n_s_t_a_l_l. If you were to store the files in /_u_s_r/_l_o_c_a_l/_l_i_b/_x_d_m, the following command could be used to start _x_d_m: /usr/bin/X11/xdm -config /usr/local/lib/xdm/xdm-config Many servers set the keyboard to do non-blocking I/O under the assumption that they are the only programs attempting to read from the keyboard. Unfortunately, some versions of /_e_t_c/_g_e_t_t_y (A/UX's in particular) will immediately see a continuous stream of zero-length reads which they interpret as end-of-file indicators. Eventually, /_e_t_c/_i_n_i_t will dis- able logins on that line until somebody types the following as root: XXXX WWWWiiiinnnnddddoooowwww SSSSyyyysssstttteeeemmmm RRRReeeelllleeeeaaaasssseeee NNNNooootttteeeessss XXXX,,,, VVVVeeeerrrrssssiiiioooonnnn 11111111,,,, RRRReeeelllleeeeaaaasssseeee 4444 ---- 11116666 ---- # kill -HUP 1 Under A/UX, one alternative is to disable logins on the con- sole and always run _x_d_m from /_e_t_c/_i_n_i_t_t_a_b. However, make sure that you save a copy of the old /_e_t_c/_i_n_i_t_t_a_b in case something goes wrong and you have to restore logins from over the network or from single-user mode. Another less drastic approach is to set up an account whose shell is the _x_d_m_s_h_e_l_l program found in _m_i_t/_c_l_i_e_n_t_s/_x_d_m/. This program is not installed by default so that site administrators will examine it to see if it meets their needs. The _x_d_m_s_h_e_l_l utility makes sure that it is being run from the appropriate type of terminal, starts _x_d_m, waits for it to finish, and then resets the console if necessary. If the _x_d_m resources file (specified by the _D_i_s_p_l_a_y_M_a_n_a_g_e_r*_r_e_s_o_u_r_c_e_s entry in the _x_d_m-_c_o_n_f_i_g file) con- tains a binding to the _a_b_o_r_t-_d_i_s_p_l_a_y action similar to the following xlogin*login.translations: #override CtrlR: abort-display() the console can then by restored by pressing the indicated key (Control-R in the above example) in the _x_d_m login win- dow. The _x_d_m_s_h_e_l_l program is usually installed setuid to root but executable only by members of a special group, of which the account which has _x_d_m_s_h_e_l_l as its shell is the only member: % grep xdm /etc/passwd x:aB9i7vhDVa82z:101:51:Account for starting up X:/tmp:/etc/xdmshell % grep 51 /etc/group xdmgrp:*:51: % ls -lg /etc/xdmshell -rws--x--- 1 root xdmgrp 20338 Nov 1 01:32 /etc/xdmshell If the _x_d_m resources have not been configured to have a key bound to the _a_b_o_r_t-_d_i_s_p_l_a_y() action, there will be no way for general users to login to the console directly. Whether or not this is desirable depends on the particular site. _3. _H_o_w _t_o _R_e_p_o_r_t _B_u_g_s _o_r _R_e_q_u_e_s_t _E_n_h_a_n_c_e_m_e_n_t_s If you find a _r_e_p_r_o_d_u_c_i_b_l_e bug in the core distribution sup- ported by MIT (i.e. not in _c_o_n_t_r_i_b/) or would like to sug- gest an enhancement (preferably with sample code), please fill in a copy of the form located in _m_i_t/_d_o_c/_b_u_g_s/_b_u_g- _r_e_p_o_r_t and mail it to: _x_b_u_g_s@_e_x_p_o._l_c_s._m_i_t._e_d_u XXXX WWWWiiiinnnnddddoooowwww SSSSyyyysssstttteeeemmmm RRRReeeelllleeeeaaaasssseeee NNNNooootttteeeessss XXXX,,,, VVVVeeeerrrrssssiiiioooonnnn 11111111,,,, RRRReeeelllleeeeaaaasssseeee 4444 ---- 11117777 ---- Please fill in all sections (even if the bug appears on all systems) and please include any test cases; a small sample program is almost always the best information we can receive. Sites that do not have access to the various net- works may send printed copies of bug reports and tests cases to: X Bugs X Consortium MIT Laboratory for Computer Science room NE43-218 545 Technology Square Cambridge, MA 02139 Bug reports that are not sent in electronic form cannot be guaranteed a response. Also, any media containing bug reports, contributions, etc. will not be returned. Bugs in user-contributed software should be sent to the author of the particular program, nnnnooootttt to the address listed above. The X Consortium will not track or forward bugs in code located in _c_o_n_t_r_i_b/. _4. _W_h_a_t'_s _N_e_w _i_n _t_h_i_s _R_e_l_e_a_s_e The primary focus of this release has been optimization of the server and improvements in the key applications. _4._1. _C_h_a_n_g_e_s _t_o _t_h_e _c_o_r_e _d_i_s_t_r_i_b_u_t_i_o_n The following additions, deletions, and modifications have been made to the software in the core distribution. Widget writers should read the new X Toolkit Intrinsics specifica- tion. Application developers who use the Athena Widget Set should read the list of changes in the file _m_i_t/_l_i_b/_X_a_w/_C_H_A_N_G_E_S and the conversion document _m_i_t/_d_o_c/_X_a_w/_C_o_n_v_e_r_t_T_o_R_4, and read the new _A_t_h_e_n_a _W_i_d_g_e_t _S_e_t documentation. many, many bugs fixed A large number of bugs have been fixed in the server, the libraries, and the clients. Servers are now robust enough that they have been known to run for more than 3 months without experiencing any problems. The server is now much stricter about disallowing extraneous bits in masks (particularly the _d_o__n_o_t__p_r_o_p_a_g_a_t_e__m_a_s_k window attribute), causing some improperly coded applications to generate protocol errors. A new, non-standard extension is provided (see _x_s_e_t _b_c) to enable backwards-compatibility for broken clients. server optimized, data space reduced A substantial number of optimizations to both the XXXX WWWWiiiinnnnddddoooowwww SSSSyyyysssstttteeeemmmm RRRReeeelllleeeeaaaasssseeee NNNNooootttteeeessss XXXX,,,, VVVVeeeerrrrssssiiiioooonnnn 11111111,,,, RRRReeeelllleeeeaaaasssseeee 4444 ---- 11118888 ---- device-independent (dix) and device-dependent (ddx) code. The monochrome (mfb) and color (cfb) frame buffer code is now capable of driving many displays at memory speeds. In addition, the amount of heap memory that is used by the server has been reduced by roughly two-thirds since the last release. SHAPE extension Non-rectangular windows are now supported by the new SHAPE extension. Round windows such as round clocks (see _o_c_l_o_c_k), oval buttons (see _x_m_h and _x_c_a_l_c), and shaped desktop icons (see _x_b_i_f_f) are now possible. This extension is a Consortium standard. prototype extensions Prototypes of two extensions that are currently under development are provided in this release. The _M_u_l_t_i- _B_u_f_f_e_r_i_n_g extension provides the ability to do simple animation (see _i_c_o -_d_b_l), and the _X_I_n_p_u_t_E_x_t_e_n_s_i_o_n pro- vides access to alternate input devices. These exten- sions are ddddrrrraaaafffftttt Consortium standards and are subject to change. build configuration moved and simplified The configuration files have been moved to _m_i_t/_c_o_n_f_i_g/ and have been rewritten to make better use of prepro- cessor symbols and macros. Support for System V with and without the STREAMS transport layers has been added. new servers New support has been added to the sample server for the following platforms: Sun _c_g_t_h_r_e_e and _c_g_s_i_x frame buffers, Digital DECstation frame buffers, Tektronix 4319 frame buffer, and all HP framebuffers. Reorgani- zations within the machine-independent (mi) graphics code make porting to new platforms even easier than it was before. security hooks Programming hooks in _X_l_i_b and the server are provided for passing authorization information at connection setup time. A sample implementation (called MIT- MAGIC-COOKIE-1) based on secret tokens is used by _x_d_m and the server to provide greater security than the host-based mechanism. new fonts Adobe Systems and Digital Equipment Corporation have jointly donated 100dpi versions of the 75dpi fonts that they provided in the last release. In addition, Digi- tal has donated a set of terminal emulator fonts. Bigelow & Holmes and Sun Microsystems have jointly donated a collection of fonts from the _L_u_c_i_d_a family. XXXX WWWWiiiinnnnddddoooowwww SSSSyyyysssstttteeeemmmm RRRReeeelllleeeeaaaasssseeee NNNNooootttteeeessss XXXX,,,, VVVVeeeerrrrssssiiiioooonnnn 11111111,,,, RRRReeeelllleeeeaaaasssseeee 4444 ---- 11119999 ---- Sun has also donated a set of OPEN LOOK glyph fonts. Sony has donated a set of Kanji and Kana fonts, and several individuals have donated additional fixed-width fonts. ICCCM support _X_l_i_b, the _X _T_o_o_l_k_i_t _I_n_t_r_i_n_s_i_c_s, _t_w_m, and various clients are now hoped to be ICCCM-compliant. The fol- lowing window managers in _c_o_n_t_r_i_b/_w_i_n_d_o_w_m_g_r_s/ also claim to be compliant: _g_w_m, _o_l_w_m, and _t_e_k_w_m. new rgb color database A new color database containing many new colors, gray scales, and color spectra tuned for some of the common monitors is included. function prototypes ANSI C function prototypes have been added to the _X_l_i_b and _X_t header files; the include files should now also be usable from C++ without modification. The _X_l_i_b pro- totypes are enabled by default (on systems that support them), while the _X_t prototypes are disabled (they were added too late in our release cycle). Picky compilers (such as _h_c) will now catch many type incompatibili- ties. shared libraries Support for SunOS-style shared libraries has been added to _X_l_i_b, _X_t, _X_a_w, and _X_m_u. This substantially reduces the amount of disk spaced used for executable programs. new Xt Intrinsics The _X _T_o_o_l_k_i_t _I_n_t_r_i_n_s_i_c_s now provide windowless objects, varargs-style interfaces, better caching of resources, fallback resources, locale-driven finding of data files. Athena widget enhancements Most of the _X_a_w library has been rewritten to substan- tially improve functionality, robustness, and perfor- mance. New SSSSiiiimmmmpppplllleeeeMMMMeeeennnnuuuu and MMMMeeeennnnuuuuBBBBuuuuttttttttoooonnnn widgets support pop-up and pull-down menus. The TTTTeeeexxxxtttt widget has been rewritten and is now quite usable for general editing. The VVVVPPPPaaaannnneeeedddd widget has been generalized to include hor- izontal paning (and is now called PPPPaaaannnneeeedddd). The LLLLaaaabbbbeeeellll widget now supports multi-line labels. A new TTTToooogggggggglllleeee widget has been provided for implementing radio- buttons. Finally, the CCCCoooommmmmmmmaaaannnndddd widget has been enhanced to use the SHAPE extension to provide true round but- tons. standard colormap routines A new set of routines for manipulating standard color- maps (see the _X_S_t_a_n_d_a_r_d_C_o_l_o_r_m_a_p structure in the _X_l_i_b XXXX WWWWiiiinnnnddddoooowwww SSSSyyyysssstttteeeemmmm RRRReeeelllleeeeaaaasssseeee NNNNooootttteeeessss XXXX,,,, VVVVeeeerrrrssssiiiioooonnnn 11111111,,,, RRRReeeelllleeeeaaaasssseeee 4444 ---- 22220000 ---- documentation) has been added to the _X_m_u library. The _x_s_t_d_c_m_a_p client uses these routines to create standard colormaps. additional converters A variety of new converters have been added to _X_m_u. In addition, multi-display programs should now be able to use these converters (and might find the utilities for managing the multiple display data structures useful). new window manager The _u_w_m window manager has been moved from the core distribution to the user-contributed distribution. A substantially rewritten version of the _t_w_m window manager is now supported. improvements in xdm The _x_d_m display manager has been rewritten to reduce the number of processes it requires and to make it much more robust. This is now the only supported means for starting the server at boot time (the -_L command line option has been removed from _x_t_e_r_m). new utilities Several new utility programs have been provided: _a_p_p_r_e_s for determining which resources are loaded into particular applications, _l_i_s_t_r_e_s for printing the resource hierarchy for a widget, _o_c_l_o_c_k for people who like truly round clocks, _x_a_u_t_h for manipulating author- ization files, _x_d_i_t_v_i_e_w for previewing _d_i_t_r_o_f_f files, _x_f_o_n_t_s_e_l for interactively selecting fonts, _x_l_s_a_t_o_m_s for determining the value of various atoms, _x_l_s_c_l_i_e_n_t_s for listing the clients currenting being run, and _x_s_t_d_c_m_a_p for manipulating standard colormaps. new demos A new demo of how various GC attributes (_x_g_c) affect what is displayed on the screen is provided. new features in _x_t_e_r_m The following features have been added to _x_t_e_r_m: 8-bit input and output, on-the-fly changing of the current font through escape sequences and a new menu, new resources for controlling whether or not synthetic key events are ignored, increased portability, and improved menus using the new Athena SSSSiiiimmmmpppplllleeeeMMMMeeeennnnuuuu widget. new CLX and documentation A substantially improved version of CLX, the Common Lisp interface to X, is provided. In addition, comprehensive documentation of the CLX interface is provided, courtesy of Texas Instruments. sample copyright notice in _m_i_t/_C_O_P_Y_R_I_G_H_T_S XXXX WWWWiiiinnnnddddoooowwww SSSSyyyysssstttteeeemmmm RRRReeeelllleeeeaaaasssseeee NNNNooootttteeeessss XXXX,,,, VVVVeeeerrrrssssiiiioooonnnn 11111111,,,, RRRReeeelllleeeeaaaasssseeee 4444 ---- 22221111 ---- The file _m_i_t/_C_O_P_Y_R_I_G_H_T_S in the top level directory con- tains a sample copyright notice recommended for people who are interested in contributing software to the pub- lic releases. X Standards in _m_i_t/_S_t_a_n_d_a_r_d_s._m_a_n The _X_S_t_a_n_d_a_r_d_s(_1) manual page contains a description of what is and is not an MIT X Consortium standard for the X Window System. For further information about the X Consortium, see the manual page _X_C_o_n_s_o_r_t_i_u_m(_1). _4._2. _H_i_g_h_l_i_g_h_t_s _o_f _t_h_e _U_s_e_r-_C_o_n_t_r_i_b_u_t_e_d _D_i_s_t_r_i_b_u_t_i_o_n The user-contributed distribution is set up in a tree very similar to that used by the core distribution. New versions of several packages are available, and a variety of new donations have been received. Since this is nnnnooootttt a superset of the previous user-contributed tape, sites are encouraged to save any R3 user-contributed software that they use. Note that this distribution is of no relation to the /_c_o_n_- _t_r_i_b directory available for anonymous ftp on _e_x_p_o._l_c_s._m_i_t._e_d_u. XView and olwm The _X_V_i_e_w toolkit and an ICCCM-compliant OPEN LOOK win- dow manager from Sun Microsystems have been added to this release. This toolkit implements the OPEN LOOK graphical user interface guidelines and the SunView application programming interface. Gwm The _G_e_n_e_r_i_c _W_i_n_d_o_w _M_a_n_a_g_e_r from Groupe Bull has been added. Unlike other window managers, _g_w_m provides a programming language for tailoring its user interface. It is believed to be ICCCM-compliant. Tektronix Window Manager The _T_e_k_t_r_o_n_i_x _W_i_n_d_o_w _M_a_n_a_g_e_r, derived from the _a_w_m win- dow manager in the previous release, is also new to this release. Like _g_w_m and _o_l_w_m, _t_e_k_w_m is believed to be ICCCM-compliant. Sigma toolkit and window manager The Sigma Project has donated its Sigma User Interface Toolkit (SUIT) and window manager (_m__s_w_m). toolkits updated New versions of _I_n_t_e_r_V_i_e_w_s, _X_w, _a_n_d_r_e_w, and _c_l_u_e are included. New toolkits include: _x_g_k_s and _X_c_u. Serpent UIMS The _S_e_r_p_e_n_t user interface management system is included in this release. XXXX WWWWiiiinnnnddddoooowwww SSSSyyyysssstttteeeemmmm RRRReeeelllleeeeaaaasssseeee NNNNooootttteeeessss XXXX,,,, VVVVeeeerrrrssssiiiioooonnnn 11111111,,,, RRRReeeelllleeeeaaaasssseeee 4444 ---- 22222222 ---- new libraries Several libraries for doing Japanese input (see _X_J and _W_n_n), multi-language input (see _m_l_x and _i_m), and com- pose processing (see _X_C_o_m_p_o_s_e) are provided. new programming examples The examples from the O'Reilly and Associates books on _X_l_i_b and _X_t have been provided. new demos A variety of eye-catching demos have been added. new clients A number of useful packages have been added: image analysis (see _N_C_S_A and _i_m_g), multi-language libraries and utilities (see _k_i_n_p_u_t, _k_t_e_r_m, and _m_l_x_t_e_r_m), a user interface prototyping system (see _w_i_n_t_e_r_p), plus improved versions of _x_f_e_d, _x_c_o_l_o_r_s, _x_p_i_c, _x_p_l_a_c_e_s, _x_t_e_k (formerly _t_e_x_x), _x_t_r_o_f_f, and _x_w_e_b_s_t_e_r. games A variety of new games have been contributed since the new release. _5. _W_r_i_t_i_n_g _P_o_r_t_a_b_l_e _X _S_o_f_t_w_a_r_e A favorite saying around here goes: There's no such thing as portable software, only software that has been ported. However, there are few rules of thumb that go a long way towards making programs written for X easy to getting run- ning on a wide variety of machines: 1. Keep all source filenames to 12 characters or less. This is the maximum number of characters that older System V file systems allow when using a source code control system. 2. Use _I_m_a_k_e_f_i_l_e_s. They are the only way to generate correct _M_a_k_e_f_i_l_e_s. The _x_m_k_m_f shell script in _m_i_t/_u_t_i_l/_s_c_r_i_p_t_s/ makes it trivial create _M_a_k_e_f_i_l_e_s outside of the core source tree. The easiest way to construct an _I_m_a_k_e_f_i_l_e is to start with one that does something similar and modify it. The various macros that are used are defined in the file _m_i_t/_c_o_n_f_i_g/_I_m_a_k_e._r_u_l_e_s. 3. If you absolutely must use _M_a_k_e_f_i_l_e_s instead of _I_m_a_k_e_f_i_l_e_s, link against -_l_X_1_1 instead of -_l_X. If you are using _i_m_a_k_e, use the symbolic names $(XAWLIB), $(XMULIB), $(XTOOLLIB), $(EXTENSIONLIB), and $(XLIB). _X_a_w clients may use the symbol _X_a_w_C_l_i_e_n_t_L_i_b_s to refer to the appropriate libraries. 4. Include header files using the syntax <_X_1_1/_f_i_l_e._h> XXXX WWWWiiiinnnnddddoooowwww SSSSyyyysssstttteeeemmmm RRRReeeelllleeeeaaaasssseeee NNNNooootttteeeessss XXXX,,,, VVVVeeeerrrrssssiiiioooonnnn 11111111,,,, RRRReeeelllleeeeaaaasssseeee 4444 ---- 22223333 ---- instead of "_X_1_1/_f_i_l_e._h", <_X/_f_i_l_e._h>, or "_X/_f_i_l_e._h". 5. Include <_X_1_1/_X_o_s._h> if you need _t_y_p_e_s._h, _s_t_r_i_n_g._h or _s_t_r_i_n_g_s._h (then use the routines _i_n_d_e_x and _r_i_n_d_e_x instead of _s_t_r_c_h_r and _s_t_r_r_c_h_r), _f_i_l_e._h, _t_i_m_e._h, or _u_n_i_s_t_d._h. 6. If you need to put in System V vs. BSD dependencies, use #_i_f_d_e_f _S_Y_S_V. If you need SVR3 vs. SVR2, use #_i_f_d_e_f _U_S_G. 7. Do not assume that the root window's Visual (returned by the _D_e_f_a_u_l_t_V_i_s_u_a_l macro) is the only one available. Some color screens may use a black and white window for the root or could provide StaticColor as well as Pseu- doColor visuals. Unfortunately, most libraries do not have adequate support for locating visuals to use. In the mean time, use _X_G_e_t_V_i_s_u_a_l_I_n_f_o(). 8. Use -_d_i_s_p_l_a_y _d_i_s_p_l_a_y_n_a_m_e to specify the X server to contact. Do not simply assume that if a command line argument has a colon in it that it is a _d_i_s_p_l_a_y_n_a_m_e. If you accept command line abbreviations, make sure that you also accept the full -_d_i_s_p_l_a_y. 9. Use -_g_e_o_m_e_t_r_y _g_e_o_m_s_p_e_c to specify window geometry. Do not simply assume that if a command line argument begins with an equal sign that it is a window geometry. If you accept command line abbreviations, make sure that you also accept the full -_g_e_o_m_e_t_r_y. 10. Use the ._m_a_n suffix for program manual page sources. 11. If you are interested in contributing software to the MIT public release, please use a copyright notice that is no more restrictive than the one shown in the files ./_C_O_P_Y_R_I_G_H_T_S and _c_o_n_t_r_i_b/_C_O_P_Y_R_I_G_H_T_S. We hope you enjoy Release 4. XXXX WWWWiiiinnnnddddoooowwww SSSSyyyysssstttteeeemmmm RRRReeeelllleeeeaaaasssseeee NNNNooootttteeeessss XXXX,,,, VVVVeeeerrrrssssiiiioooonnnn 11111111,,,, RRRReeeelllleeeeaaaasssseeee 4444