DataMuseum.dk

Presents historical artifacts from the history of:

DKUUG/EUUG Conference tapes

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about DKUUG/EUUG Conference tapes

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - download
Index: ┃ T x

⟦2f455d624⟧ TextFile

    Length: 144258 (0x23382)
    Types: TextFile
    Names: »x.PS«

Derivation

└─⟦a0efdde77⟧ Bits:30001252 EUUGD11 Tape, 1987 Spring Conference Helsinki
    └─ ⟦526ad3590⟧ »EUUGD11/gnu-31mar87/X.V10.R4.tar.Z« 
        └─⟦2109abc41⟧ 
            └─ ⟦this⟧ »./X.V10R4/doc/Paper/x.PS« 

TextFile

%!PS-Adobe-1.0
%%Title: x.mss
%%DocumentFonts: (atend)
%%Creator: Jim Gettys,Jim,E40-342CM,3-1326,6460340 and Scribe 5(1501)
%%CreationDate: 19 November 1986 12:40
%%Pages: (atend)
%%EndComments
% PostScript Prelude for Scribe.
/BS {/SV save def 0.0 792.0 translate .01 -.01 scale} bind def
/ES {showpage SV restore} bind def
/SC {setrgbcolor} bind def
/FMTX matrix def
/RDF {WFT SLT 0.0 eq
  {SSZ 0.0 0.0 SSZ neg 0.0 0.0 FMTX astore}
  {SSZ 0.0 SLT sin SLT cos div SSZ mul SSZ neg 0.0 0.0 FMTX astore}
  ifelse makefont setfont} bind def
/SLT 0.0 def
/SI { /SLT exch cvr def RDF} bind def
/WFT /Courier findfont def
/SF { /WFT exch findfont def RDF} bind def
/SSZ 1000.0 def
/SS { /SSZ exch 100.0 mul def RDF} bind def
/AF { /WFT exch findfont def /SSZ exch 100.0 mul def RDF} bind def
/MT /moveto load def
/XM {currentpoint exch pop moveto} bind def
/UL {gsave newpath moveto dup 2.0 div 0.0 exch rmoveto
   setlinewidth 0.0 rlineto stroke grestore} bind def
/LH {gsave newpath moveto setlinewidth
   0.0 rlineto
   gsave stroke grestore} bind def
/LV {gsave newpath moveto setlinewidth
   0.0 exch rlineto
   gsave stroke grestore} bind def
/BX {gsave newpath moveto setlinewidth
   exch
   dup 0.0 rlineto
   exch 0.0 exch neg rlineto
   neg 0.0 rlineto
   closepath
   gsave stroke grestore} bind def
/BX1 {grestore} bind def
/BX2 {setlinewidth 1 setgray stroke grestore} bind def
/PB {/PV save def translate 100.0 -100.0 scale pop} bind def
/PE {PV restore} bind def
/SH /show load def
/MX {exch show 0.0 rmoveto} bind def
/W {0 32 4 -1 roll widthshow} bind def
/WX {0 32 5 -1 roll widthshow 0.0 rmoveto} bind def
%%EndProlog
%%Page: 1 1 
BS
0 SI
15 /Helvetica-Bold AF
22596 8294 MT
(The X Window System)SH
8 /Helvetica AF
34712 10501 MT
(1)SH
10 SS 
26043 10852 MT
(Robert W. Scheifler)SH
22236 11995 MT
(MIT Laboratory for Computer Science)SH
8 SS 
32739 13930 MT
(2)SH
10 SS 
28016 14281 MT
(Jim Gettys)SH
23931 15424 MT
(Digital Equipment Corporation)SH
26320 16567 MT
(MIT Project Athena)SH
28460 18853 MT
(July 1986)SH
8 SS 
35352 19650 MT
(3)SH
10 SS 
25403 20001 MT
(Revised October 1986)SH
13 /Helvetica-Bold AF
27963 27989 MT
(Abstract)SH
10 /Helvetica AF
7200 30522 MT
(An overview of the X Window System is presented, focusing on the system substrate and the)
94 W( low-level)93 W
7200 31665 MT
(facilities provided to build applications and to manage the desktop.)
365 W( The)
1009 W( system provides high-)366 W
7200 32808 MT
(performance, high-level, device-independent graphics.)
190 W( A)
656 W( hierarchy of resizable, overlapping windows)189 W
7200 33951 MT
(allows a wide variety of application and user interfaces to be built)
52 W( easily.  Network-transparent access to)53 W
7200 35094 MT
(the display provides an important degree of functional)
445 W( separation, without significantly affecting)444 W
7200 36237 MT
(performance, that is crucial to building applications for a)
7 W( distributed environment.  To a reasonable extent,)8 W
7200 37380 MT
(desktop management can be custom tailored to individual environments, without)
218 W( modifying the base)217 W
7200 38523 MT
(system and typically without affecting applications.)SH
7200 40807 MT
(Categories and Subject Descriptors:  C.2.2 [)6 W
/Helvetica-Bold SF
(Computer-Communication Networks)6 W
/Helvetica SF
(]: Network)
290 W( Protocols -)6 W
/Helvetica-Oblique SF
7200 41950 MT
(protocol architecture)203 W
/Helvetica SF
(; C.2.4 [)203 W
/Helvetica-Bold SF
(Computer-Communication Networks)203 W
/Helvetica SF
(]: Distributed Systems)
203 W( -)202 W
/Helvetica-Oblique SF
49387 XM
(distributed)SH
7200 43093 MT
(applications)SH
/Helvetica SF
(; D.4.4 [)417 W
/Helvetica-Bold SF
(Operating Systems)417 W
/Helvetica SF
(]: Communication)
417 W( Management -)418 W
/Helvetica-Oblique SF
42801 XM
(network communication,)418 W
7200 44236 MT
(terminal management)290 W
/Helvetica SF
(; H.1.2 [)290 W
/Helvetica-Bold SF
(Information Systems)290 W
/Helvetica SF
(]: User/Machine Systems)
290 W( -)289 W
/Helvetica-Oblique SF
44584 XM
(human factors)289 W
/Helvetica SF
(; I.3.2)289 W
7200 45379 MT
([)SH
/Helvetica-Bold SF
(Computer Graphics)272 W
/Helvetica SF
(]: Graphic Systems -)272 W
/Helvetica-Oblique SF
27510 XM
(distributed/network graphics)273 W
/Helvetica SF
(; I.3.4 [)273 W
/Helvetica-Bold SF
(Computer Graphics)273 W
/Helvetica SF
(]:)SH
7200 46522 MT
(Graphics Utilities -)112 W
/Helvetica-Oblique SF
15926 XM
(graphics packages, software support)112 W
/Helvetica SF
(; I.3.6 [)111 W
/Helvetica-Bold SF
(Computer Graphics)111 W
/Helvetica SF
(]: Methodology and)111 W
7200 47665 MT
(Techniques -)SH
/Helvetica-Oblique SF
13258 XM
(device independence, interaction techniques)SH
/Helvetica SF
7200 49949 MT
(General terms:  Design, Experimentation, Human Factors, Standardization)SH
7200 52233 MT
(Additional Key Words and Phrases:  window systems, window managers, virtual terminals)SH
10800 50 7200 62660 UL
6 SS 
8090 64055 MT
(1)SH
8 SS 
8424 64368 MT
(545 Technology Square, Cambridge, MA 02139.)SH
6 SS 
8090 65963 MT
(2)SH
8 SS 
8424 66276 MT
(Project Athena, MIT, Cambridge, MA 02139.)SH
6 SS 
8090 67871 MT
(3)SH
8 SS 
8424 68184 MT
(To appear in Transactions on Graphics #63, Special Issue on User)
231 W( Interface Software, Copyright 1986, Association for)230 W
7200 69138 MT
(Computing Machinery. Permission to copy without fee all or part of this material)
19 W( is granted provided that the copies are not made or)20 W
7200 70092 MT
(distributed for direct commercial advantage, the ACM copyright notice and)
15 W( the title of the publication and its date appear, and notice)14 W
7200 71046 MT
(is given that copying is by permission of the Association for Computing Machinery.  To copy otherwise, or)
5 W( to republish requires a fee)6 W
7200 72000 MT
(and/or specific permission.)SH
ES
%%Page: 2 2 
BS
0 SI
10 /Helvetica-Bold AF
30322 4329 MT
(2)SH
12 SS 
7200 8075 MT
(1. Introduction)SH
10 /Helvetica AF
22765 9218 MT
(The X Window System \050or simply X)SH
8 SS 
53555 10755 MT
(4)SH
10 SS 
8312 11106 MT
(developed at MIT has achieved fairly)
398 W( widespread popularity recently, particularly in the Unix)399 W
7200 12532 MT
(community. In)
717 W( this paper, we present an overview of X, focusing on the system substrate and the)219 W
7200 13958 MT
(low-level facilities provided to build applications and to manage the desktop.  In)
170 W( X, this base window)171 W
7200 15384 MT
(system provides)
44 W( high-performance graphics to a hierarchy of resizable windows.  Rather than mandating)43 W
7200 16810 MT
(a particular user interface, X provides primitives to support several policies and styles.)
204 W( Unlike)
688 W( most)205 W
7200 18236 MT
(window systems, the base)
127 W( system in X is defined by a)126 W
/Helvetica-Oblique SF
32710 XM
(network protocol)126 W
/Helvetica SF
(: asynchronous)
530 W( stream-based)126 W
7200 19662 MT
(inter-process communication replaces the traditional procedure call or kernel call)
417 W( interface.  An)418 W
7200 21088 MT
(application can utilize windows on any display in a)
39 W( network in a device-independent, network-transparent)38 W
7200 22514 MT
(fashion. Interposing)
618 W( a network)
170 W( connection greatly enhances the utility of the window system, without)171 W
7200 23940 MT
(significantly affecting performance.  The performance of existing X implementations is)
195 W( comparable to)194 W
7200 25366 MT
(contemporary window systems, and in general is limited by display hardware)
308 W( rather than network)309 W
7200 26792 MT
(communication. For)
676 W( example, 19500 characters per second and)
199 W( 3500 short vectors per second are)198 W
7200 28218 MT
(possible on Digital Equipment Corporation's VAXStation-II/GPX,)
296 W( both locally and over a local area)297 W
7200 29644 MT
(network, and these figures are very close to the limits of the display hardware.)SH
8312 32211 MT
(X is the result of the simultaneous need for a window system from two separate groups at MIT.  In)
39 W( the)38 W
7200 33637 MT
(summer of 1984, the Argus)
154 W( system)
155 W( [13])
SH( at the Laboratory for Computer Science needed a debugging)155 W
7200 35063 MT
(environment for multi-process distributed applications, and)
214 W( a window system seemed the only viable)213 W
7200 36489 MT
(solution. Project)
285 W( Athena)
4 W( [3])
SH( was faced with dozens, and eventually thousands of workstations with bitmap)4 W
7200 37915 MT
(displays, and needed a window system to make the displays useful.  Both)
69 W( groups were starting with the)68 W
7200 39341 MT
(Digital VS100 display)
79 W( [11])
SH( and)
79 W( VAX hardware, but it was clear at the outset that other architectures and)80 W
7200 40767 MT
(displays had to be supported.  In particular,)
91 W( equal numbers of IBM workstations with bitmap displays of)90 W
7200 42193 MT
(unknown type were expected eventually within Project Athena.  Portability was)
59 W( therefore a goal from the)60 W
7200 43619 MT
(start. Although)
402 W( all of the initial implementation work was for Berkeley Unix, it was clear that the network)62 W
7200 45045 MT
(protocol should not depend on aspects of the operating system.)SH
8312 47612 MT
(The name X derives from the lineage of the system.  At Stanford University, Paul Asente and Brian)121 W
7200 49038 MT
(Reid had begun)
310 W( work on the W window system)
309 W( [2],)
SH( as an alternative to VGTS)
309 W( [10, 18])
SH( for the V)309 W
7200 50464 MT
(system [4].)
SH( Both)
330 W( VGTS and W allow network-transparent access to the display, using the synchronous)
26 W( V)27 W
7200 51890 MT
(communication mechanism.  Both systems provide "text" windows)
96 W( for ASCII terminal emulation.  VGTS)95 W
7200 53316 MT
(provides graphics windows driven by fairly)
111 W( high-level object definitions from a structured display file; W)112 W
7200 54742 MT
(provides graphics)
211 W( windows based on a simple display-list mechanism, with limited functionality.  We)210 W
7200 56168 MT
(acquired a Unix-based version of W for the)
188 W( VS100 \050with synchronous communication over TCP)
189 W( [21]\051)SH
7200 57594 MT
(done by)
194 W( Asente and Chris Kent at Digital's Western Research Laboratory.  From just a few days of)193 W
7200 59020 MT
(experimentation, it was clear that a network-transparent hierarchical window system)
116 W( was desirable, but)117 W
7200 60446 MT
(that restricting the system to any fixed set of application-specific modes was completely inadequate.)
104 W( It)484 W
7200 61872 MT
(was also clear that, although)
51 W( synchronous communication was perhaps acceptable in the V system \050due)52 W
7200 63298 MT
(to very fast networking primitives\051, it was completely inadequate in most other operating)
19 W( environments.  X)18 W
7200 64724 MT
(is our)
35 W( "reaction" to W. The X window hierarchy comes directly from W, although numerous systems have)36 W
7200 66150 MT
(been built with hierarchy)
243 W( in at least some form)
242 W( [8, 12, 25, 28, 30, 31, 32, 33, 29].)
SH( The)
762 W( asynchronous)242 W
7200 67576 MT
(communication protocol used in X is a)
33 W( significant improvement over the synchronous protocol used in W,)34 W
10800 50 7200 70292 UL
6 SS 
8090 71687 MT
(4)SH
8 SS 
8424 72000 MT
(Unix is a trademark of AT&T Bell Laboratories.)SH
ES
%%Page: 3 3 
BS
0 SI
10 /Helvetica-Bold AF
30322 4329 MT
(3)SH
/Helvetica SF
7200 7929 MT
(but is very similar to that)
137 W( used in Andrew)
136 W( [7, 16].)
SH( X)
550 W( differs from all of these systems in the degree to)136 W
7200 9355 MT
(which both graphics functions and "system")
381 W( functions are pushed back \050across the network\051 as)382 W
7200 10781 MT
(application functions, and in the ability to transparently tailor desktop management.)SH
8312 13348 MT
(The next)
215 W( section presents several high-level requirements that we believe a window system must)214 W
7200 14774 MT
(satisfy to be)
2 W( a viable standard in a network environment, and indicates where the design of X fails to meet)3 W
7200 16200 MT
(some of these requirements.)
149 W( In)
575 W( Section 3 we describe the overall X system model, and the effect of)148 W
7200 17626 MT
(network-based communication on that)
170 W( model.  Section 4 describes the structure of windows, and the)171 W
7200 19052 MT
(primitives for manipulating that structure.)
112 W( Section)
500 W( 5 explains the color model used in X, and Section 6)111 W
7200 20478 MT
(presents the text and graphics facilities.  Section 7 discusses the)
24 W( issues of window exposure and refresh,)25 W
7200 21904 MT
(and their resolution)
220 W( in X. Section 8 deals with input event handling.  In Section 9, we describe the)219 W
7200 23330 MT
(mechanisms for desktop management.)SH
8 SS 
22785 25546 MT
(5)SH
10 SS 
8312 25897 MT
(This paper)
5 W( describes the version)6 W
23514 XM
(of X that is currently in widespread use.  The design of this version is)6 W
7200 27323 MT
(inadequate in several respects.  With our)
308 W( experience to date, and encouraged by the number of)307 W
7200 28749 MT
(universities and manufacturers taking a serious interest in X, we have designed a new version that should)7 W
7200 30175 MT
(satisfy a)
102 W( significantly wider community.  Section 10 discusses a number of problems with the current X)101 W
7200 31601 MT
(design, and gives a general idea of what changes are contemplated.)SH
12 /Helvetica-Bold AF
7200 35356 MT
(2. Requirements)SH
10 /Helvetica AF
8312 36782 MT
(A window system contains many interfaces.  A)28 W
/Helvetica-Oblique SF
29377 XM
(programming)SH
/Helvetica SF
35573 XM
(interface is a library of routines and)
28 W( types)29 W
7200 38208 MT
(provided in a programming language for interacting with the window system.  Both low-level \050e.g.,)
130 W( line)129 W
7200 39634 MT
(drawing\051 and high-level \050e.g., menus\051 interfaces are typically provided.  An)151 W
/Helvetica-Oblique SF
41985 XM
(application)SH
/Helvetica SF
47194 XM
(interface is)
151 W( the)152 W
7200 41060 MT
(mechanical interaction with the user and the visual appearance that)
188 W( is specific to the application.  A)187 W
/Helvetica-Oblique SF
7200 42486 MT
(management)SH
/Helvetica SF
13540 XM
(interface is the mechanical interaction with the user)
226 W( dealing with overall control of the)227 W
7200 43912 MT
(desktop and the input devices.  The management interface defines how applications are arranged)
119 W( and)118 W
7200 45338 MT
(rearranged on the screen, and how the user switches between applications; an individual)
188 W( application)189 W
7200 46764 MT
(interface defines how information is presented and manipulated within that application.  The)SH
/Helvetica-Oblique SF
47942 XM
(user)SH
/Helvetica SF
50165 XM
(interface)SH
7200 48190 MT
(is the sum total of all application and management interfaces.)SH
8312 50757 MT
(Besides applications, we distinguish three major)
269 W( components of a window system.  The)270 W
/Helvetica-Oblique SF
50666 XM
(window)SH
8 /Helvetica AF
11146 51832 MT
(6)SH
10 /Helvetica-Oblique AF
7200 52183 MT
(manager)SH
/Helvetica SF
12233 XM
(implements the desktop portion of)
364 W( the management interface; it controls the size and)363 W
7200 53609 MT
(placement of application windows, and also may)
75 W( control application window attributes such as titles and)76 W
7200 55035 MT
(borders. The)518 W
/Helvetica-Oblique SF
13785 XM
(input manager)120 W
/Helvetica SF
20694 XM
(implements the remainder of the management interface; it controls which)119 W
7200 56461 MT
(applications see input from which devices \050e.g., keyboard and mouse\051.  The)73 W
/Helvetica-Oblique SF
41813 XM
(base window system)73 W
/Helvetica SF
51536 XM
(is the)74 W
7200 57887 MT
(substrate on which applications, window managers, and input managers are built.)SH
8312 60454 MT
(In this paper we are concerned with the base)
27 W( window system of X, with the facilities it provides to build)26 W
7200 61880 MT
(applications and managers.  The following requirements on the base window system crystallized)
90 W( during)91 W
7200 63306 MT
(the design of X \050a few were not formulated until late in the design process\051:)SH
9424 64707 MT
(1.)SH
10536 XM
(The system should be implementable on a variety of displays.)SH
10800 50 7200 68384 UL
6 SS 
8090 69779 MT
(5)SH
8 SS 
8424 70092 MT
(Version 10.)SH
6 SS 
8090 71687 MT
(6)SH
8 SS 
8424 72000 MT
(Some people use this term for what we call the base window system; that is not the meaning here.)SH
ES
%%Page: 4 4 
BS
0 SI
10 /Helvetica-Bold AF
30322 4329 MT
(4)SH
/Helvetica SF
10536 7929 MT
(The system should work with nearly any bitmap)
18 W( display, and a variety of input devices.  Our)17 W
10536 9072 MT
(design focused on workstation-class)
41 W( display technology likely to be available in a university)42 W
10536 10215 MT
(environment over)
63 W( the next few years.  At one end of the spectrum is a simple frame buffer)62 W
10536 11358 MT
(and monochrome monitor, driven directly by the host CPU with no)
213 W( additional hardware)214 W
10536 12501 MT
(support. At)
334 W( the other end of the spectrum is a multi-plane display with)
28 W( color monitor, driven)27 W
10536 13644 MT
(by a high-performance graphics co-processor.  Input devices such)
207 W( as keyboards, mice,)208 W
10536 14787 MT
(tablets, joysticks, light pens, and touch screens should be supported.)SH
9424 16602 MT
(2.)SH
10536 XM
(Applications must be device independent.)SH
10536 18417 MT
(There are several aspects to device independence.)
274 W( Most)
825 W( importantly, it must not be)273 W
10536 19560 MT
(necessary to rewrite, recompile, or)
282 W( even relink an application for each new hardware)283 W
10536 20703 MT
(display. Nearly)
310 W( as important, every graphics function defined by the system should work)
16 W( on)15 W
10536 21846 MT
(virtually every supported display; the alternative, which is)
404 W( to use GKS-style inquire)405 W
10536 22989 MT
(operations [9])
SH( to determine the set of implemented functions at run-time, leads)
125 W( to tedious)124 W
10536 24132 MT
(case analysis in every)
146 W( application, and to inconsistent user interfaces.  A third aspect of)147 W
10536 25275 MT
(device independence is that, as far as possible, applications should not need dual control)98 W
10536 26418 MT
(paths to work on both monochrome and color displays.)SH
9424 28233 MT
(3.)SH
10536 XM
(The system must be network transparent:  an)
51 W( application running on one machine must be)52 W
10536 29376 MT
(able to utilize)
4 W( a display on some other machine.  The two machines should not have to have)3 W
10536 30519 MT
(the same architecture or operating system.)SH
10536 32334 MT
(There are numerous examples of)
180 W( why this important:  a compute-intensive VLSI design)181 W
10536 33477 MT
(program executing on a mainframe,)
84 W( but displaying results on a workstation; an application)83 W
10536 34620 MT
(distributed over)
13 W( several stand-alone processors, but interacting with a user at a workstation;)14 W
10536 35763 MT
(a professor running a program)
47 W( on one workstation, presenting results simultaneously on all)46 W
10536 36906 MT
(student workstations.)SH
10536 38721 MT
(In a network environment, there are certain to be applications that must run on particular)119 W
10536 39864 MT
(machines or architectures.)
75 W( Examples)
426 W( include proprietary software, applications depending)74 W
10536 41007 MT
(on specific architectural properties, and programs manipulating)
233 W( large databases.  Such)234 W
10536 42150 MT
(applications still should be accessible to all users.)
103 W( In)
482 W( a truly heterogeneous environment,)102 W
10536 43293 MT
(not all programming languages and programming systems are supported on all machines,)86 W
10536 44436 MT
(and it is very undesirable to have to write an interactive front end)
87 W( in multiple languages in)86 W
10536 45579 MT
(order to make the application generally available.  With)
60 W( network-transparent access, this is)61 W
10536 46722 MT
(not necessary; a single front end written in the same language as the application suffices.)SH
10536 48537 MT
(One might think that remote display)
209 W( will be extremely infrequent, and that performance)208 W
10536 49680 MT
(therefore is much less important than for local)
269 W( display.  Experience at MIT, however,)270 W
10536 50823 MT
(indicates that)
120 W( many users routinely make use of the remote display capabilities in X, and)119 W
10536 51966 MT
(that the performance of remote display is)
119 W( quite important.  The desktop display, although)120 W
10536 53109 MT
(physically connected to)
266 W( a single computer, is used as a true)265 W
/Helvetica-Oblique SF
40132 XM
(network virtual terminal)265 W
/Helvetica SF
(;)SH
10536 54252 MT
(indeed, the idea of an X server \050see the next section\051)
42 W( built into a Blit-like terminal)
43 W( [20])
SH( is an)43 W
10536 55395 MT
(intriguing one.)SH
9424 57210 MT
(4.)SH
10536 XM
(The system must support multiple applications displaying concurrently.)SH
10536 59025 MT
(For example, it should be possible to display a clock with a)
160 W( sweep second hand in one)159 W
10536 60168 MT
(window, while simultaneously editing a file in another window.)SH
9424 61983 MT
(5.)SH
10536 XM
(The system should be capable of supporting many different application and management)121 W
10536 63126 MT
(interfaces.)SH
10536 64941 MT
(No single user interface is "best"; different communities have radically)
43 W( different ideas about)42 W
10536 66084 MT
(user interfaces.  Even within a)
159 W( single community, "experts" and "novices" place different)160 W
10536 67227 MT
(demands on an interface.)
210 W( Rather)
696 W( than mandating a particular user interface, the base)209 W
10536 68370 MT
(window system should support a wide range of interfaces.)SH
10536 70185 MT
(To achieve this, the system must)
97 W( provide)98 W
/Helvetica-Oblique SF
29613 XM
(hooks)SH
/Helvetica SF
32657 XM
(\050mechanism\051 rather than)98 W
/Helvetica-Oblique SF
44121 XM
(religion)SH
/Helvetica SF
47720 XM
(\050policy\051.)SH
10536 71328 MT
(For example, since menu styles and semantics vary dramatically among)
243 W( different user)242 W
ES
%%Page: 5 5 
BS
0 SI
10 /Helvetica-Bold AF
30322 4329 MT
(5)SH
/Helvetica SF
10536 7929 MT
(interfaces, the)
25 W( base window system must provide primitives from which menus can be built,)26 W
10536 9072 MT
(rather than just providing a fixed menu facility.)SH
10536 10887 MT
(The system should be designed in such a way that)
30 W( it is possible to implement management)29 W
10536 12030 MT
(policy both external to the base window system and)
85 W( external to applications.  Applications)86 W
10536 13173 MT
(should be largely independent of management policy and)
89 W( mechanism; applications should)88 W
/Helvetica-Oblique SF
10536 14316 MT
(react to)175 W
/Helvetica SF
14500 XM
(management decisions, rather than)176 W
/Helvetica-Oblique SF
31156 XM
(directing)SH
/Helvetica SF
35389 XM
(those decisions.  For example, an)176 W
10536 15459 MT
(application needs to be informed when one of its windows is resized, and)
89 W( should react by)88 W
10536 16602 MT
(reformatting the)
206 W( information displayed, but involvement of the application should not be)207 W
10536 17745 MT
(required in order for the user to change)
274 W( the size.  Making applications management-)273 W
10536 18888 MT
(independent, as well as device-independent, facilitates the sharing of)
55 W( applications between)56 W
10536 20031 MT
(diverse cultures.)SH
9424 21846 MT
(6.)SH
10536 XM
(The system must support)
312 W( overlapping windows, including output to partially obscured)311 W
10536 22989 MT
(windows.)SH
10536 24804 MT
(This is in some sense a by-product of the previous)
44 W( requirement, but is important enough to)45 W
10536 25947 MT
(merit explicit statement.)
330 W( Not)
937 W( all user interfaces allow windows to overlap arbitrarily.)329 W
10536 27090 MT
(However, even interfaces that do not allow application windows to overlap typically provide)51 W
10536 28233 MT
(some form of pop-up menu)
23 W( that overlaps application windows.  If such menus are built from)22 W
10536 29376 MT
(windows, then support for overlapping windows must exist.)SH
9424 31191 MT
(7.)SH
10536 XM
(The system should support a hierarchy of resizable windows, and an)
51 W( application should be)52 W
10536 32334 MT
(able to use many windows at once.)SH
10536 34149 MT
(Subwindows provide a clean,)
75 W( powerful mechanism for exporting much of the basic system)74 W
10536 35292 MT
(machinery back to the application for direct use.  Many applications make)
59 W( use of their own)60 W
10536 36435 MT
(window-like abstractions;)
18 W( some even implement what is essentially another window system,)17 W
10536 37578 MT
(nested within the "real" window)
15 W( system.  It is important to support arbitrary levels of nesting.)16 W
10536 38721 MT
(What is viewed as a single)
247 W( window at one abstraction level may well require multiple)246 W
10536 39864 MT
(subwindows at a lower level.  By providing)
128 W( a true window hierarchy, application windows)129 W
10536 41007 MT
(can be implemented as true windows within the system, freeing)
306 W( the application from)305 W
10536 42150 MT
(duplicating machinery such as clipping and input control.)SH
9424 43965 MT
(8.)SH
10536 XM
(The system should provide high-performance, high-quality support for)
161 W( text, 2-D synthetic)162 W
10536 45108 MT
(graphics, and imaging.)SH
10536 46923 MT
(The base window system must provide "immediate")
397 W( or "transparent" graphics:  the)396 W
10536 48066 MT
(application describes the image precisely,)
203 W( and the system does not attempt to second-)204 W
10536 49209 MT
(guess the application.)
172 W( The)
621 W( use of high-level models, whereby the application describes)171 W
/Helvetica-Oblique SF
10536 50352 MT
(what)SH
/Helvetica SF
13100 XM
(it wants in terms of fairly abstract objects and the system determines)174 W
/Helvetica-Oblique SF
45756 XM
(how)SH
/Helvetica SF
48043 XM
(best to)175 W
10536 51495 MT
(render the image, cannot be imposed as the)
56 W( only form of graphics interface.  Such models)55 W
10536 52638 MT
(generally fail to provide)
189 W( adequate support for some important class of applications, and)190 W
10536 53781 MT
(different user communities tend to have strong opinions about which)
29 W( model is "best".  High-)28 W
10536 54924 MT
(level models are extremely important to provide,)
41 W( but they should be built in layers on top of)42 W
10536 56067 MT
(the base window system.)SH
10536 57882 MT
(Support for 3-D graphics is not listed as a requirement, but this is not to say it)
327 W( is)326 W
10536 59025 MT
(unimportant. We)
555 W( simply have not considered 3-D graphics, due to lack of expertise and)139 W
10536 60168 MT
(lack of time.)SH
9424 61983 MT
(9.)SH
10536 XM
(The system should be extensible.)SH
10536 63798 MT
(For example, the core system may not support 3-D graphics, but it should be)
115 W( possible to)114 W
10536 64941 MT
(extend the)
27 W( system with such support.  The extension mechanism should allow communities)28 W
10536 66084 MT
(to extend the system non-cooperatively, yet allow such)
283 W( independent extensions to be)282 W
10536 67227 MT
(merged gracefully.)SH
8312 69794 MT
(We believe that a window system must satisfy these requirements to)
229 W( be a viable standard in an)230 W
7200 71220 MT
(environment of high-performance workstations and)
211 W( mainframes connected via high-performance local)210 W
ES
%%Page: 6 6 
BS
0 SI
10 /Helvetica-Bold AF
30322 4329 MT
(6)SH
/Helvetica SF
7200 7929 MT
(area networks.  X satisfies most of these requirements, but currently fails to satisfy a)
37 W( few due to practical)38 W
7200 9355 MT
(considerations of staffing and time)
84 W( constraints:  the design and much of the implementation of the base)83 W
7200 10781 MT
(window system was to be handled)
55 W( solely by the first author; it was important to get a working system up)56 W
7200 12207 MT
(fairly quickly; and the immediate applications only required relatively simple text and graphics support.  As)4 W
7200 13633 MT
(a result, X is not designed to handle high-end color displays or to deal with input devices other than a)114 W
7200 15059 MT
(keyboard and mouse; some support for high-quality text and graphics is missing; X)
30 W( only provides support)29 W
7200 16485 MT
(for one class of management policy; and no provision has been made)
101 W( for extensions.  As discussed in)102 W
7200 17911 MT
(Section 10, these and other problems are being addressed in a redesign of X.)SH
12 /Helvetica-Bold AF
7200 21666 MT
(3. System Model)SH
10 /Helvetica AF
8312 23092 MT
(The X window system is based on a client-server model; this model follows naturally)
8 W( from requirements)7 W
7200 24518 MT
(two and three in the previous)
93 W( section.  For each physical display, there is a controlling server.  A client)94 W
7200 25944 MT
(application and a server communicate over)
74 W( a reliable duplex \0508-bit\051 byte stream.  A simple block stream)73 W
7200 27370 MT
(protocol is layered on top of the byte stream.  If the client and)
158 W( server are on the same machine, the)159 W
7200 28796 MT
(stream is typically based on a local inter-process communication \050IPC\051 mechanism,)
206 W( and otherwise a)205 W
7200 30222 MT
(network connection is established between the)
66 W( pair.  Requiring nothing more than a reliable duplex byte)67 W
7200 31648 MT
(stream \050without urgent data\051 for communication makes X usable in many environments.  For example, the)4 W
7200 33074 MT
(X protocol can be used over TCP [21], DECnet [36], and Chaos [15].)SH
8312 35641 MT
(Multiple clients can have connections open to a server)
341 W( simultaneously, and a client can have)342 W
7200 37067 MT
(connections open to multiple servers simultaneously.  The essential tasks of the server are)
93 W( to multiplex)92 W
7200 38493 MT
(requests from clients to the display, and demultiplex keyboard and mouse input back)
85 W( to the appropriate)86 W
7200 39919 MT
(clients. Typically,)
304 W( the)
13 W( server is implemented as a single sequential process, using round-robin scheduling)12 W
7200 41345 MT
(among the clients, and)
21 W( this centralized control trivially solves many synchronization problems; however, a)22 W
7200 42771 MT
(multi-process server has also been implemented.  Although one might place the server in the)
101 W( kernel of)100 W
7200 44197 MT
(the operating system in an attempt to increase performance, a user-level server process is vastly easier)67 W
7200 45623 MT
(to debug and)
14 W( maintain, and performance under Unix in fact does not seem to suffer.  Similar performance)13 W
7200 47049 MT
(results have been obtained in Andrew)
68 W( [7].)
SH( Various)
416 W( tricks are used in both clients and server to optimize)69 W
7200 48475 MT
(performance, principally by minimizing the number of operating system calls [6].)SH
8312 51042 MT
(The server encapsulates)
313 W( the base window system.  It provides the fundamental resources and)312 W
7200 52468 MT
(mechanisms, and the hooks)
51 W( required to implement various user interfaces.  All device dependencies are)52 W
7200 53894 MT
(encapsulated by the server; the communication protocol between clients and the server is)
308 W( device)307 W
7200 55320 MT
(independent. By)
440 W( placing all device dependencies on one end of a)
81 W( network connection, applications are)82 W
7200 56746 MT
(truly device independent.  The addition of a new display type simply requires the)
25 W( addition of a new server)24 W
7200 58172 MT
(implementation; no application changes are required.)
81 W( Of)
441 W( course, the server itself is designed as device)82 W
7200 59598 MT
(independent code layered)
63 W( on top of a device dependent core, so only the "back end" of the server need)62 W
8 SS 
24874 60673 MT
(7)SH
10 SS 
7200 61024 MT
(be reimplemented for each new display.)SH
10800 50 7200 69338 UL
6 SS 
8090 70733 MT
(7)SH
8 SS 
8424 71046 MT
(A back end has been implemented)
11 W( using a programming interface to X itself, such that a complete "recursive" X server executes)12 W
7200 72000 MT
(inside a window of another X server.)SH
ES
%%Page: 7 7 
BS
0 SI
10 /Helvetica-Bold AF
30322 4329 MT
(7)SH
23792 59283 MT
(Figure 2-1:)SH
/Helvetica SF
29738 XM
(System Structure)SH
ES
%%Page: 8 8 
BS
0 SI
10 /Helvetica-Bold AF
30322 4329 MT
(8)SH
11 SS 
7200 8002 MT
(3.1. Network Considerations)SH
10 /Helvetica AF
8312 9428 MT
(It is extremely important for the server to be robust with respect to client failures.)
53 W( The)
383 W( server, and the)52 W
7200 10854 MT
(network protocol, must be designed so that the server never trusts clients to provide correct data.)
74 W( As)
428 W( a)75 W
7200 12280 MT
(corollary, the protocol must be designed in such a way that, if the server ever has to wait)
53 W( for a response)52 W
7200 13706 MT
(from a client, it must be possible to continue servicing other clients.  Without)
40 W( this property, a buggy client)41 W
7200 15132 MT
(or a network failure could easily cause the entire display to freeze up.)SH
8312 17699 MT
(Byte ordering is a standard problem in network communication:  when a 16-bit or 32-bit quantity is)153 W
7200 19125 MT
(transmitted over an 8-bit byte stream, is the most)
48 W( significant byte transmitted first \050big-endian byte order\051)49 W
7200 20551 MT
(or is the least significant byte transmitted first \050little-endian)
212 W( byte order\051?  Some machines with byte-)211 W
7200 21977 MT
(addressable memory use big-endian order)
55 W( internally, and others use little-endian order.  If a single order)56 W
7200 23403 MT
(is chosen for network communication, some machines will suffer)
88 W( the overhead of swapping bytes, even)87 W
7200 24829 MT
(when communicating with a machine using the same internal byte order.  Such)
45 W( an approach also means)46 W
7200 26255 MT
(that both parties in the communication must worry about byte order.)SH
8312 28822 MT
(The X protocol uses a different)
202 W( approach.  The server is designed to accept both big-endian and)201 W
7200 30248 MT
(little-endian connections.  For example, using TCP this is accomplished by having the server)
7 W( listen on two)8 W
7200 31674 MT
(distinct ports; little-endian clients connect to the server on one port, and big-endian)
21 W( clients connect on the)20 W
7200 33100 MT
(other. Clients)
370 W( always transmit and receive in their)
46 W( native byte order.  The server alone is responsible for)47 W
7200 34526 MT
(byte swapping,)
25 W( and byte swapping only occurs between dissimilar architectures.  This eliminates the byte)24 W
7200 35952 MT
(swapping overhead)
243 W( in the most common situations, and greatly simplifies the building of client-side)244 W
7200 37378 MT
(interface libraries in various programming languages.  X is not unique)
84 W( in its use of this trick; the current)83 W
7200 38804 MT
(VGTS implementation uses)
59 W( the same trick, and similar protocol optimizations have been used in various)60 W
7200 40230 MT
(network-based applications.)SH
8312 42797 MT
(Another potential)
232 W( problem in protocol design is word alignment.  In particular, some architectures)231 W
7200 44223 MT
(require 16-bit quantities to be aligned on 16-bit)
93 W( boundaries and 32-bit quantities to be aligned on 32-bit)94 W
7200 45649 MT
(boundaries in memory.  To allow efficient implementations of the protocol)
11 W( across a spectrum of 16-bit and)10 W
7200 47075 MT
(32-bit architectures, the protocol is defined to consist of blocks that are always multiples of 32 bits,)
85 W( and)86 W
7200 48501 MT
(each 16-bit and 32-bit quantity within a block is aligned on 16-bit and 32-bit boundaries, respectively.)SH
8312 51068 MT
(X is designed to operate in an environment where)
88 W( the inter-process communication round-trip time is)87 W
7200 52494 MT
(between 5 and 50 milliseconds, both for local and for network)
16 W( communication.  We also assume that data)17 W
7200 53920 MT
(transmission rates are comparable to display rates; for example, to transmit and display 5000)
48 W( characters)47 W
7200 55346 MT
(per second, a data rate of approximately 50Kb \050kilobits per second\051 will be needed, and)
75 W( to transmit and)76 W
7200 56772 MT
(display 20000 characters)
46 W( per second, a data rate of approximately 200Kb will be needed.  Networks and)45 W
7200 58198 MT
(protocol implementations with these characteristics are now quite commonplace.  For example,)435 W
7200 59624 MT
(workstations running Berkeley Unix,)
191 W( connected via 10Mb \050megabits per second\051 local area networks,)190 W
7200 61050 MT
(typically have round-trip times of 15 to 30 milliseconds, and data rates of 500Kb to 1Mb.)SH
8312 63617 MT
(The round-trip time is important in determining the form of the communication protocol.)
178 W( The)
635 W( most)179 W
7200 65043 MT
(common communication will be text and)
50 W( graphics requests sent from a client to the server.  Examples of)49 W
7200 66469 MT
(individual requests might be to draw)
31 W( a string of text or to draw a line.  Such requests could be sent either)32 W
7200 67895 MT
(synchronously, in which case the client sends a request only after receiving a reply from the)
25 W( server to the)24 W
7200 69321 MT
(previous request, or they could be sent asynchronously, without)
269 W( the server generating any replies.)270 W
7200 70747 MT
(However, since the requests are sent over a reliable stream, they are guaranteed)
56 W( to arrive, and arrive in)55 W
ES
%%Page: 9 9 
BS
0 SI
10 /Helvetica-Bold AF
30322 4329 MT
(9)SH
/Helvetica SF
7200 7929 MT
(order, so replies from the server to graphics requests serve no useful purpose.  Moreover, with)
28 W( round-trip)29 W
7200 9355 MT
(times over 5 milliseconds, output to the display must be asynchronous, or it)
115 W( will be impossible to drive)114 W
7200 10781 MT
(high-speed displays)
51 W( adequately.  For example, at 80 characters per request and a 25 millisecond round-)52 W
7200 12207 MT
(trip time, only 3200)
5 W( characters per second can be drawn synchronously, whereas many hardware devices)4 W
7200 13633 MT
(are capable of displaying between 5000 and 30000 characters per second.)SH
8312 16200 MT
(Similarly, polling the server for keyboard and mouse input would be unacceptable in many)
8 W( applications,)9 W
7200 17626 MT
(particularly those written in sequential languages.)
193 W( For)
663 W( example, an application attempting to provide)192 W
7200 19052 MT
(real-time response to input has to poll periodically for input during screen updates.  For)
125 W( an application)126 W
7200 20478 MT
(with a single thread of control, this effectively results in synchronous output, and consequent)
8 W( performance)7 W
7200 21904 MT
(loss. Hence,)
464 W( input must)
93 W( be generated asynchronously by the server, so that applications need at most)94 W
7200 23330 MT
(perform local polling.)SH
8312 25897 MT
(The round-trip time is also important in determining what user interfaces can be)
175 W( supported without)174 W
7200 27323 MT
(embedding them directly)
63 W( in the server.  The most important concern is whether remote, application-level)64 W
7200 28749 MT
(mouse tracking is feasible.  By)59 W
/Helvetica-Oblique SF
21337 XM
(tracking)SH
/Helvetica SF
(, we do not mean maintaining the cursor image)
59 W( on the screen as)58 W
7200 30175 MT
(the user moves the mouse; that function is performed autonomously)
149 W( by the X server, often directly in)150 W
7200 31601 MT
(hardware. Rather,)
530 W( applications)
126 W( track the mouse by animating some other image on the screen in real)125 W
7200 33027 MT
(time as the mouse moves.  For)
85 W( round-trip times under 50 milliseconds, tracking is perfectly reasonable,)86 W
7200 34453 MT
(driven either)
1 W( by motion events generated by the server or by continuous polling from the application.  With)SH
7200 35879 MT
(a refresh occurring up to 30 times every second, remote tracking is)
120 W( demonstrably "instantaneous" with)121 W
7200 37305 MT
(mouse motion.)SH
8312 39872 MT
(For tracking to be effective, however, relatively little time can be spent updating the display at each)132 W
7200 41298 MT
(movement, so typically only relatively small changes can)
88 W( be made to the screen while tracking.  This is)89 W
7200 42724 MT
(certainly the case for common operations, such as rubber banding window outlines and highlighting menu)8 W
7200 44150 MT
(items. It)
598 W( might be argued that)
160 W( the ability to run application-specific code in the server is required for)161 W
7200 45576 MT
(acceptable hand-eye coordination during complex tracking.  For example,)
158 W( NeWS)
157 W( [27])
SH( provides such a)157 W
7200 47002 MT
(mechanism in a novel way.  However, we are not convinced there are sufficient)
98 W( benefits to justify such)99 W
7200 48428 MT
(complexity. Complex)
296 W( tracking typically is bound up intimately with application-specific data structures and)9 W
7200 49854 MT
(knowledge representations, and such information is used by the "back end" of the)
63 W( application as well as)64 W
7200 51280 MT
(the "front end".  In a distributed)
16 W( system it is folly to believe that applications will download large front ends)15 W
7200 52706 MT
(into a server; communication round-trip times are a reality that cannot be escaped.)SH
11 /Helvetica-Bold AF
7200 56388 MT
(3.2. Resources)SH
10 /Helvetica AF
8312 57814 MT
(The basic resources provided by the server are windows, fonts, mouse cursors,)
8 W( and off-screen images;)9 W
7200 59240 MT
(later sections describe each of these.  Clients request creation of a)
130 W( resource by supplying appropriate)129 W
7200 60666 MT
(parameters \050such as the name of the font\051; the server allocates the resource)
52 W( and returns a 31-bit unique)53 W
7200 62092 MT
(identifier used to represent it.)
102 W( The)
480 W( use and interpretation of a resource identifier is independent of any)101 W
7200 63518 MT
(network connection.  Any client that knows \050or guesses\051 the identifier for a resource can use)
264 W( and)265 W
7200 64944 MT
(manipulate the resource freely,)
1 W( even if it was created by another client.  This capability is required to allow)SH
7200 66370 MT
(window managers to be written independently of applications, and)
81 W( to allow multi-process applications to)82 W
7200 67796 MT
(manipulate shared resources.  However, to avoid problems associated with clients that)
119 W( fail to clean up)118 W
7200 69222 MT
(their resources at termination)
33 W( \050which is all too common in operating systems where users can unilaterally)34 W
7200 70648 MT
(abort processes\051, the maximum lifetime)
73 W( of a resource is always tied to the connection over which it was)72 W
ES
%%Page: 10 10 
BS
0 SI
10 /Helvetica-Bold AF
30044 4329 MT
(10)SH
/Helvetica SF
7200 7929 MT
(created. Thus,)
278 W( when a client terminates, all of the resources it created are destroyed automatically.)SH
8312 10496 MT
(Access control is performed only when a client attempts to establish a connection to the server; once)73 W
7200 11922 MT
(the connection is established the client)
441 W( can freely manipulate any resource.  Since accidental)440 W
7200 13348 MT
(manipulation of some other client's resource)
159 W( is extremely unlikely \050both in theory and in practice\051, we)160 W
7200 14774 MT
(believe introducing access control)
125 W( on a per-resource basis would only serve to decrease performance,)124 W
7200 16200 MT
(not to significantly)
194 W( increase security or robustness.  The current access control mechanism is based)195 W
7200 17626 MT
(simply on host network addresses, as this information is provided by)
34 W( most network stream protocols, and)33 W
7200 19052 MT
(there seems to be no widely used or even)
85 W( widely available user-level authentication mechanism.  Host-)86 W
7200 20478 MT
(based access control has proven to be)
60 W( marginally acceptable in a workstation environment, but is rather)59 W
8 SS 
24985 21553 MT
(8)SH
10 SS 
7200 21904 MT
(unacceptable for time-shared machines.)SH
8312 24471 MT
(Each client-generated protocol request is a simple data block consisting)
7 W( of an opcode, some number of)8 W
7200 25897 MT
(fixed-length parameters, and possibly a variable-length parameter.  For example, to)
195 W( display text in a)194 W
7200 27323 MT
(window, the fixed-length parameters include the drawing color and the identifiers)
59 W( for the window and the)60 W
7200 28749 MT
(font, and the variable-length parameter is the string of characters.  All operations)
49 W( on a resource explicitly)48 W
7200 30175 MT
(contain the)
138 W( identifier of the resource as a parameter.  In this way, an application can multiplex use of)139 W
7200 31601 MT
(many windows over a single)
37 W( network connection.  This multiplexing makes it easy for the client to control)36 W
7200 33027 MT
(the time-order of updates to multiple windows.  Similarly,)
222 W( each input event generated by the server)223 W
7200 34453 MT
(contains the identifier of the window in which the)
4 W( event occurred.  Multiplexing over a single stream allows)3 W
7200 35879 MT
(the client to act on events from multiple windows in correct time)
52 W( order; timestamps alone are inadequate)53 W
7200 37305 MT
(without strong guarantees from the stream mechanism.)SH
8312 39872 MT
(Numerous Unix-based window systems)
173 W( [14, 16, 17, 19, 28, 30, 33])
SH( use file or channel descriptors to)173 W
7200 41298 MT
(represent windows; window creation involves an interaction with the operating system, which results)
120 W( in)121 W
7200 42724 MT
(the creation of such a descriptor.  Typically, this means the window cannot be named \050and hence)
36 W( cannot)35 W
7200 44150 MT
(be shared\051 by programs running on different machines, and perhaps not even by programs)
111 W( running on)112 W
7200 45576 MT
(the same machine.  More serious, there is often a)
13 W( severe restriction on the number of active descriptors a)12 W
7200 47002 MT
(process may have:  20 on older systems and usually 64)
158 W( on newer systems.  The use of 50 or more)159 W
7200 48428 MT
(windows \050albeit)
32 W( nested inside a single top-level window\051 is quite common in X applications.  The use of a)31 W
7200 49854 MT
(single connection, over which an arbitrary number of)
185 W( windows can be multiplexed, is clearly a better)186 W
7200 51280 MT
(approach.)SH
12 /Helvetica-Bold AF
7200 55035 MT
(4. Window Hierarchy)SH
10 /Helvetica AF
8312 56461 MT
(The server supports an arbitrarily branching hierarchy)
105 W( of rectangular windows.  At the top is the)104 W
/Helvetica-Oblique SF
52277 XM
(root)SH
/Helvetica SF
7200 57887 MT
(window, which covers the entire screen.  The)381 W
/Helvetica-Oblique SF
30478 XM
(top-level)SH
/Helvetica SF
34916 XM
(windows of applications are created as)382 W
7200 59313 MT
(subwindows of the root window.  The window)
236 W( hierarchy models the now-familiar "stacks of papers")235 W
7200 60739 MT
(desktop. For)
302 W( a given window, its subwindows can)
12 W( be stacked in any order, with arbitrary overlaps.  When)13 W
7200 62165 MT
(window W1 partially or completely covers window W2, we say that W1)30 W
/Helvetica-Oblique SF
38902 XM
(obscures)SH
/Helvetica SF
43267 XM
(W2. This)
338 W( relationship)
30 W( is)29 W
7200 63591 MT
(not restricted to siblings; if W1 obscures W2, then W1 may also obscure subwindows of)
68 W( W2.  A window)69 W
7200 65017 MT
(also obscures its parent.  Window hierarchies never)
128 W( interleave; if window W1 obscures sibling window)127 W
7200 66443 MT
(W2, then subwindows of W2 never obscure W1 or subwindows of W1.  A)
38 W( window is not restricted in size)39 W
7200 67869 MT
(or placement by)
1 W( the boundaries of its parent, but a window is always visibly clipped by its parent:  portions)SH
10800 50 7200 70292 UL
6 SS 
8090 71687 MT
(8)SH
8 SS 
8424 72000 MT
(It is interesting that)SH
/Helvetica-Oblique SF
15359 XM
(professors)SH
/Helvetica SF
19315 XM
(at MIT have argued vociferously to disable all access control.)SH
ES
%%Page: 11 11 
BS
0 SI
10 /Helvetica-Bold AF
30044 4329 MT
(11)SH
/Helvetica SF
7200 7929 MT
(of the window that)
61 W( extend outside the boundaries of the parent are never displayed, and do not obscure)62 W
7200 9355 MT
(other windows.  Finally, a window can be either)82 W
/Helvetica-Oblique SF
29113 XM
(mapped)SH
/Helvetica SF
33086 XM
(or)SH
/Helvetica-Oblique SF
34335 XM
(unmapped)SH
/Helvetica SF
(. An)
442 W( unmapped)
82 W( window is never)81 W
7200 10781 MT
(visible on the screen; a mapped window can only be visible if all of its ancestors are also mapped.)SH
8312 13348 MT
(Output to a leaf window \050one)
189 W( with no subwindows\051 is always clipped to the visible portions of the)190 W
7200 14774 MT
(window; drawing on such a window never draws into obscuring windows.  Output to a window that)219 W
7200 16200 MT
(contains subwindows can be performed in two modes.  In)36 W
/Helvetica-Oblique SF
33238 XM
(clipped)SH
/Helvetica SF
36720 XM
(mode the output is clipped normally)
36 W( by)37 W
7200 17626 MT
(all obscuring windows \050including subwindows\051, but in)167 W
/Helvetica-Oblique SF
31988 XM
(draw-through)SH
/Helvetica SF
38324 XM
(mode the output is not clipped)
167 W( by)166 W
7200 19052 MT
(subwindows. For)
357 W( example, draw-through mode is used on the root window during window management,)40 W
7200 20478 MT
(tracking the mouse)
38 W( with the outline of a window to indicate how the window is to be moved or resized.  If)37 W
7200 21904 MT
(clipped mode were used instead, the entire outline would not be visible.)SH
8312 24471 MT
(The coordinate system is defined with the)
55 W( X axis horizontal and the Y axis vertical.  Each window has)56 W
7200 25897 MT
(its own coordinate system, with the)
148 W( origin at the upper left corner of the window.  Having per-window)147 W
7200 27323 MT
(coordinate systems)
46 W( is crucial, particularly for top-level windows; applications are almost always designed)47 W
7200 28749 MT
(to be insensitive to their position on the screen, and having to worry about race)
59 W( conditions when moving)58 W
7200 30175 MT
(windows would be a disaster.  The coordinate system is)
3 W( discrete: each pixel in the window corresponds to)4 W
7200 31601 MT
(a single unit in the coordinate system, with coordinates centered on)
115 W( the pixels, and all coordinates are)114 W
7200 33027 MT
(expressed as integers in the protocol.  We believe fractional coordinates are not required at the)
59 W( protocol)60 W
7200 34453 MT
(level for the raster graphics provided)
125 W( in X \050see section 6\051, although they may be required for high-end)124 W
7200 35879 MT
(color graphics, such as anti-aliasing.  The aspect ratio of the screen is not masked)
40 W( by the protocol, since)41 W
7200 37305 MT
(we believe that)
251 W( most displays have a one to one aspect ratio; in this regard X is arguably device)250 W
7200 38731 MT
(dependent.)SH
8312 41298 MT
(Although the coordinate system is discrete)
370 W( at the protocol level, continuous or alternate-origin)371 W
7200 42724 MT
(coordinate systems certainly can be used at the application level, but client-side libraries must)
40 W( eventually)39 W
7200 44150 MT
(translate to the discrete coordinates defined by the protocol.)
225 W( In)
730 W( this way, we can ignore the many)226 W
7200 45576 MT
(variations in floating-point \050or)
1 W( even fixed-point\051 formats among architectures.  Further, the coordinates can)SH
7200 47002 MT
(be expressed in)
103 W( the protocol as 16-bit quantities, which can be manipulated efficiently in virtually every)104 W
7200 48428 MT
(machine/display architecture, and which minimizes the number)
325 W( of data bytes transmitted over the)324 W
7200 49854 MT
(network. The)
368 W( use of 16-bit quantities does have a drawback, in)
45 W( that some applications \050particularly CAD)46 W
7200 51280 MT
(tools\051 like to perform zoom operations)
1 W( simply by scaling coordinates and redrawing, relying on the window)SH
7200 52706 MT
(system to clip)
325 W( appropriately.  Since scaling quickly overflows 16 bits, additional clipping must be)326 W
7200 54132 MT
(performed explicitly by such applications.)SH
8312 56699 MT
(A window can)
126 W( optionally have a)125 W
/Helvetica-Oblique SF
23293 XM
(border)SH
/Helvetica SF
(, a shaded outer frame maintained explicitly by the X server.)125 W
7200 58125 MT
(The origin of the window's)
117 W( coordinate system is inside the border, and output to the window is clipped)118 W
7200 59551 MT
(automatically so as not to extend into the border.)
202 W( The)
680 W( presence of borders slightly complicates the)201 W
7200 60977 MT
(semantics of the window system; for simplicity we will ignore them in the remainder of this paper.)SH
8312 63544 MT
(The basic operations on window structure are straightforward.  An unmapped window is created)
143 W( by)144 W
7200 64970 MT
(specifying the parent window, the position within the parent)
92 W( of the upper left corner of the new window,)91 W
7200 66396 MT
(and the width and height \050in coordinate units\051 of the new)
58 W( window.  A window can be destroyed, in which)59 W
7200 67822 MT
(case all windows below it in the hierarchy are also destroyed.  A window can be)
28 W( mapped and unmapped,)27 W
7200 69248 MT
(without changing its position.  A window can be moved)
76 W( and resized, including being moved and resized)77 W
7200 70674 MT
(simultaneously. A)
434 W( window can also be "depthwise" raised to the top or lowered to the bottom)
78 W( the stack)77 W
ES
%%Page: 12 12 
BS
0 SI
10 /Helvetica-Bold AF
30044 4329 MT
(12)SH
/Helvetica SF
7200 7929 MT
(with respect to its siblings, without changing its coordinate position.)
85 W( Currently)
450 W( mapping or configuring a)86 W
7200 9355 MT
(window forces the window to be raised.  This restriction appeared to)
71 W( simplify the server implementation,)70 W
7200 10781 MT
(but also happened to)
9 W( match the basic management interface we expected to build.  This restriction will be)10 W
7200 12207 MT
(eliminated in the next version.)SH
8312 14774 MT
(The windows described above are the usual)76 W
/Helvetica-Oblique SF
28631 XM
(opaque)SH
/Helvetica SF
32320 XM
(windows. X)
428 W( also provides)75 W
/Helvetica-Oblique SF
44477 XM
(transparent)SH
/Helvetica SF
49888 XM
(windows.)SH
7200 16200 MT
(A transparent window is always invisible)
104 W( on the screen, and does not obscure output to, or visibility of,)105 W
7200 17626 MT
(other windows.  Output to a transparent window is clipped to that window, but is actually drawn on the)105 W
7200 19052 MT
(parent window.  Thus, for output, a transparent window)
42 W( is simply a clipping rectangle that can be applied)43 W
7200 20478 MT
(to restrict output within a \050parent\051 window.)
197 W( Input)
671 W( processing for transparent and opaque windows is)196 W
7200 21904 MT
(identical, as described in Section 8.  In Section 10 we will argue that most uses)
74 W( of transparent windows)75 W
7200 23330 MT
(are better)
61 W( satisfied with other mechanisms.  Therefore, for simplicity, we will ignore transparent windows)60 W
7200 24756 MT
(in the rest of this paper.)SH
8312 27323 MT
(The X server is designed explicitly to)
29 W( make windows inexpensive.  Our goal was to make it reasonable)30 W
7200 28749 MT
(to use windows for such things as individual menu)
157 W( items, buttons, even individual items in forms and)156 W
7200 30175 MT
(spreadsheets. As)
278 W( such, the server must deal efficiently with hundreds \050though not necessarily)
SH( thousands\051)1 W
7200 31601 MT
(of windows on the screen simultaneously.  Experience with X has shown)
4 W( that many implementors find this)3 W
7200 33027 MT
(capability extremely useful.)SH
12 /Helvetica-Bold AF
7200 36782 MT
(5. Color)SH
10 /Helvetica AF
8312 38208 MT
(The screen is viewed as two dimensional, with an N-bit)134 W
/Helvetica-Oblique SF
34216 XM
(pixel)SH
/Helvetica SF
36684 XM
(value stored at each)
134 W( coordinate.  The)135 W
7200 39634 MT
(number of)
75 W( bits in a pixel value, and how a value translates into a color, depends on the hardware.  X is)74 W
7200 41060 MT
(designed to support two types of hardware:  monochrome and pseudo-color.  A monochrome display has)26 W
7200 42486 MT
(one bit per pixel, and the two values translate into black and white.  Pseudo-color)
46 W( displays typically have)45 W
7200 43912 MT
(between four and twelve bits per pixel; the pixel value is used as an index into)
47 W( a color map, yielding red,)48 W
7200 45338 MT
(green, and blue intensities.  The color map can be changed dynamically,)
59 W( so that a given pixel value can)58 W
7200 46764 MT
(represent different colors over time.  Gray-scale is viewed as a degenerate case of pseudo-color.)SH
8312 49331 MT
(We desire a design matching most display)
70 W( hardware, while abstracting differences in such a way that)71 W
7200 50757 MT
(programmers do not have to double or triple-code their applications to cover the spectrum.)
20 W( We)
316 W( also want)19 W
7200 52183 MT
(multiple applications to coexist within a single color map, so that applications always show)
73 W( true color on)74 W
7200 53609 MT
(the screen.  To allow this, and to keep applications device independent, pixel)
23 W( values should not be coded)22 W
7200 55035 MT
(explicitly into applications.  Instead, the server must be responsible for managing the color map, and)
7 W( color)8 W
7200 56461 MT
(map allocation must be expressed in hardware-independent terms.)SH
8312 59028 MT
(All graphics operations in X are)
74 W( expressed in terms of pixel values.  For example, to draw a line, one)73 W
7200 60454 MT
(specifies not only the coordinates of the end-points but the pixel value with)
23 W( which to draw the line.  \050Logic)24 W
7200 61880 MT
(functions and plane-select masks are also specified,)
186 W( as described in Section 6.\051  On a monochrome)185 W
7200 63306 MT
(display, the only two pixel values are zero and one, which are \050somewhat)
62 W( arbitrarily\051 defined to be black)63 W
7200 64732 MT
(and white, respectively.  On a)
98 W( pseudo-color display, pixel values zero and one are pre-allocated by the)97 W
7200 66158 MT
(server, for)
283 W( use as "black" and "white", so that monochrome applications display correctly on color)284 W
7200 67584 MT
(displays. Of)
278 W( course, the actual colors need not be black and white, but can be set by the user.)SH
8312 70151 MT
(There are two ways for a client to obtain pixel values.  In the simplest request, the client specifies)
44 W( red,)43 W
7200 71577 MT
(green, and blue color values, and the server)
55 W( allocates an arbitrary pixel value and sets the color map so)56 W
ES
%%Page: 13 13 
BS
0 SI
10 /Helvetica-Bold AF
30044 4329 MT
(13)SH
/Helvetica SF
7200 7929 MT
(the pixel value represents the closest color the hardware can provide.  The color)
56 W( map entry for this pixel)55 W
7200 9355 MT
(value cannot be changed by the client, so if some other)
52 W( client requests an equivalent color, the server is)53 W
7200 10781 MT
(free to respond with the same pixel value.)
30 W( Such)
337 W( sharing is important in maximizing use of the color map.)29 W
7200 12207 MT
(To isolate applications from variations in color representation among displays)
111 W( \050due, for example, to the)112 W
7200 13633 MT
(standard of illumination used for calibration\051, the server provides a color database which clients)
67 W( can use)66 W
7200 15059 MT
(to translate string names of colors into red, green, and blue values tailored for the particular display.)SH
8312 17626 MT
(The second request allocates writable map entries.  This mechanism was designed explicitly for X;)
41 W( we)42 W
7200 19052 MT
(are not aware of a comparable)
258 W( mechanism in any other window system.  The client specifies two)257 W
7200 20478 MT
(numbers,)SH
/Helvetica-Oblique SF
11801 XM
(C)SH
/Helvetica SF
12956 XM
(and)SH
/Helvetica-Oblique SF
15057 XM
(P)SH
/Helvetica SF
(, with)155 W
/Helvetica-Oblique SF
18646 XM
(C)SH
/Helvetica SF
19801 XM
(positive and)156 W
/Helvetica-Oblique SF
25727 XM
(P)SH
/Helvetica SF
26828 XM
(non-negative; the request can be expressed as "allocate)156 W
/Helvetica-Oblique SF
53278 XM
(C)SH
8 SS 
47251 21553 MT
(P)SH
10 /Helvetica AF
7200 21904 MT
(colors and)164 W
/Helvetica-Oblique SF
12419 XM
(P)SH
/Helvetica SF
13528 XM
(planes". The)
606 W( total number of pixel values allocated by the server is)164 W
/Helvetica-Oblique SF
45584 XM
(C*2)SH
/Helvetica SF
47785 XM
(. The)
605 W( values)163 W
7200 23330 MT
(passed back to the client consist of)13 W
/Helvetica-Oblique SF
23077 XM
(C)SH
/Helvetica SF
24090 XM
(base pixel values, and a plane mask containing)13 W
/Helvetica-Oblique SF
45427 XM
(P)SH
/Helvetica SF
46385 XM
(bits. None)
305 W( of the)14 W
7200 24756 MT
(base pixel values have any one bits)
84 W( in common with the plane mask, and the complete set of allocated)83 W
7200 26182 MT
(pixel values)
9 W( is obtained by combining all possible combinations of one bits from the plane mask with each)10 W
7200 27608 MT
(of the base pixel values.  The client can optionally require)
6 W( the)5 W
/Helvetica-Oblique SF
34617 XM
(P)SH
/Helvetica SF
35567 XM
(planes to be contiguous, in which case all)5 W
/Helvetica-Oblique SF
7200 29034 MT
(P)SH
/Helvetica SF
8145 XM
(bits in the plane mask will be contiguous.)SH
8312 31601 MT
(There are three common uses of this second request.  One is simply to allocate a number)
291 W( of)292 W
7200 33027 MT
("unrelated" pixel values; in this case,)51 W
/Helvetica-Oblique SF
24001 XM
(P)SH
/Helvetica SF
24997 XM
(will be zero.  A second use is in imaging)
51 W( applications, where it is)50 W
7200 34453 MT
(convenient to be able to perform simple arithmetic on pixel values.  In this case, a contiguous)
108 W( block of)109 W
7200 35879 MT
(pixel values is allocated by setting)162 W
/Helvetica-Oblique SF
23512 XM
(C)SH
/Helvetica SF
24674 XM
(to one)
162 W( and)161 W
/Helvetica-Oblique SF
30162 XM
(P)SH
/Helvetica SF
31268 XM
(to the log \050base 2\051 of the number of pixel values)161 W
7200 37305 MT
(required, and requesting contiguous allocation.  Arithmetic on the)
7 W( pixel values then requires at most some)8 W
7200 38731 MT
(additional shift and mask operations.)SH
8312 41298 MT
(A third form of allocation arises in applications that want some)
209 W( form of overlay graphics, such as)208 W
7200 42724 MT
(highlighting or outlining regions.  Here the requirement is to be able to draw and then)
147 W( erase graphics)148 W
7200 44150 MT
(without disturbing existing window contents.  For)
176 W( example, suppose an application typically uses four)175 W
7200 45576 MT
(colors, but needs to be able to overlay a rectangle outline in)
18 W( a fifth color.  An allocation request with C set)19 W
7200 47002 MT
(to four and P set to one results in two groups of four pixel values.  The four)
196 W( base pixel values are)195 W
7200 48428 MT
(assigned the four normal colors,)
232 W( and the four alternate pixel values are all assigned the fifth color.)233 W
7200 49854 MT
(Overlay graphics can then be drawn by restricting output \050see the next section\051 to)
131 W( the single bit plane)130 W
7200 51280 MT
(specified in the mask returned by the color allocation.  Turning bits in this)
26 W( plane on \050to ones\051 changes the)27 W
7200 52706 MT
(image to the fifth color, and turning them off reverts the image to its original color.)SH
12 /Helvetica-Bold AF
7200 56461 MT
(6. Graphics and Text)SH
10 /Helvetica AF
8312 57887 MT
(Graphics operations are often the most complex part of any window system, simply)
56 W( because so many)55 W
7200 59313 MT
(different effects and variations are required to satisfy)
140 W( a wide range of applications.  In this section we)141 W
7200 60739 MT
(sketch the operations provided in X, so that the basic level of)
62 W( graphics support can be understood.  The)61 W
7200 62165 MT
(operations are essentially a)
407 W( subset of the Digital Workstation Graphics Architecture; the VS100)408 W
7200 63591 MT
(display [11])
SH( implements)
53 W( this architecture for 1-bit pixel values.  The set of operations purposely was kept)52 W
7200 65017 MT
(simple, in order to maximize portability.)SH
8312 67584 MT
(Graphics operations in X are expressed in terms of relatively)
250 W( high-level concepts, such as lines,)251 W
7200 69010 MT
(rectangles, curves, and fonts.  This is in)
33 W( contrast to systems in which the basic primitives are to read and)32 W
7200 70436 MT
(write individual pixels.  Basing applications on pixel-level primitives works)
44 W( well when display memory can)45 W
7200 71862 MT
(be mapped into the application's address space for direct manipulation.  However, both)
32 W( display hardware)31 W
ES
%%Page: 14 14 
BS
0 SI
10 /Helvetica-Bold AF
30044 4329 MT
(14)SH
/Helvetica SF
7200 7929 MT
(and operating systems exist for which such direct access)
246 W( is not possible, and emulating pixel-level)247 W
7200 9355 MT
(manipulations in)
21 W( such an environment results in extremely poor performance.  Expressing operations at a)20 W
7200 10781 MT
(higher level avoids such device dependencies, and also avoids potential problems)
389 W( with network)390 W
7200 12207 MT
(bandwidth. With)
384 W( high-level operations,)
53 W( a protocol request transmitted as a small number of bits over the)52 W
7200 13633 MT
(network typically affects ten to one hundred times as many pixels on the screen.)SH
11 /Helvetica-Bold AF
7200 17315 MT
(6.1. Images)SH
10 /Helvetica AF
8312 18741 MT
(Two forms of off-screen images are supported in X:  bitmaps and pixmaps.  A bitmap is)
38 W( a single plane)39 W
7200 20167 MT
(\050bit\051 rectangle.  A pixmap is an N-plane)
37 W( \050pixel\051 rectangle, where)36 W
/Helvetica-Oblique SF
35835 XM
(N)SH
/Helvetica SF
36871 XM
(is the number of bits per pixel used by)36 W
7200 21593 MT
(the particular display.  A bitmap or pixmap can be created by)
83 W( transmitting all of the bits to the server; a)84 W
7200 23019 MT
(pixmap can also be created by copying a rectangular region of a window.  Bitmaps and pixmaps)
193 W( of)192 W
7200 24445 MT
(arbitrary size can be created.)
6 W( Transmitting)
292 W( very large \050or deep\051 images over a network connection can be)7 W
7200 25871 MT
(quite slow; however, the ability to make use of shared memory in conjunction with the IPC)
108 W( mechanism)107 W
7200 27297 MT
(would help enormously when the client and server are on the same machine.)SH
8312 29864 MT
(The primary use of bitmaps is as masks \050clipping regions\051.  Several)
SH( graphics requests allow a bitmap to)1 W
7200 31290 MT
(be used)
38 W( as a clipping region)
37 W( [35].)
SH( Bitmaps)
352 W( are also used to construct cursors, as described in Section 8.)37 W
7200 32716 MT
(Pixmaps are used to store frequently drawn images,)
91 W( and as temporary backing-store for pop-up menus)92 W
7200 34142 MT
(\050as described in Section 8\051.  However, the principal use)
68 W( of pixmaps is as tiles, that is, as patterns which)67 W
7200 35568 MT
(are replicated in two dimensions to cover a region.)
15 W( Since)
310 W( there are often hardware restrictions as to what)16 W
7200 36994 MT
(tile shapes can be replicated efficiently, guaranteed shapes are not defined by the X protocol.  An)236 W
7200 38420 MT
(application can query the server to determine)
305 W( what shapes are supported, although to date most)306 W
7200 39846 MT
(applications simply assume 16 by 16 tiles are supported.  A better)
202 W( semantics is to support arbitrary)201 W
7200 41272 MT
(shapes, but allow applications to query as to which shapes are most efficient.)SH
8312 43839 MT
(The tiling origin used in X is almost always the origin of the destination window.)
22 W( That)
324 W( is, if enough tiles)23 W
7200 45265 MT
(were laid out, one tile would have its upper left corner at the upper left corner of the)
28 W( window.  In this way,)27 W
7200 46691 MT
(the contents of the window are independent of the window's position on the screen, and the)
52 W( window can)53 W
7200 48117 MT
(be moved transparently to the application.)SH
8312 50684 MT
(Servers vary widely in the amount of off-screen memory provided.  For example,)
123 W( some servers limit)122 W
7200 52110 MT
(off-screen memory)
92 W( to that accessible directly to the graphics processor \050typically one to three times the)93 W
7200 53536 MT
(size of screen memory\051, and fonts and other resources)
40 W( are allocated from this same pool.  Other servers)39 W
7200 54962 MT
(utilize their entire virtual address space for off-screen memory.  Since off-screen)
104 W( memory for images is)105 W
7200 56388 MT
(finite, an)
1 W( explicit part of the X protocol is the possibility that bitmap or pixmap creation can fail.  Depending)SH
7200 57814 MT
(on the intended use)
89 W( of the image, the application may or may not be able to cope with the failure.  For)90 W
7200 59240 MT
(example, if the image was being stored simply)
32 W( to speed up redisplay, the application can always transmit)31 W
7200 60666 MT
(the image directly)
11 W( each time \050see below\051.  If the image was to be a temporary backing-store for a window,)12 W
7200 62092 MT
(the application can fall back on normal exposure processing \050as described in Section 7\051.)
42 W( Servers)
360 W( should)41 W
7200 63518 MT
(be constructed in such a way as to virtually guarantee sufficient memory \050e.g.,)
125 W( by caching images\051 for)126 W
7200 64944 MT
(creating at least small tiles and cursors, although this is not true in current implementations.)SH
ES
%%Page: 15 15 
BS
0 SI
10 /Helvetica-Bold AF
30044 4329 MT
(15)SH
11 SS 
7200 8002 MT
(6.2. Graphics)SH
10 /Helvetica AF
8312 9428 MT
(All graphics and text requests include a logic)
143 W( function and a plane-select mask \050an integer with the)142 W
7200 10854 MT
(same number of bits as a)
92 W( pixel value\051 to modify the operation.  All sixteen logic functions are provided.)93 W
7200 12280 MT
(Given a source and destination pixel, the function is computed bitwise on corresponding bits of)
14 W( the pixels,)13 W
7200 13706 MT
(but only on bits specified in the plane-select mask.  Thus the result pixel is computed as)SH
9980 15389 MT
(\050\050source FUNC destination\051 AND mask\051 OR \050destination AND \050NOT mask\051\051)SH
7200 17072 MT
(The most common operation is simply replacing the destination with the source in all planes.)SH
8312 19639 MT
(The simplest)
81 W( graphics request takes a single source pixel value and combines it with every pixel in a)82 W
7200 21065 MT
(rectangular region of a window.  Typically this is used to fill a region with a color, but by)
40 W( varying the logic)39 W
7200 22491 MT
(function or masks, other)
58 W( effects can be achieved.  A second request takes a tile, effectively constructs a)59 W
7200 23917 MT
(tiled rectangular source with it, and then combines the source with a rectangular region of a window.)SH
8312 26484 MT
(An arbitrary image can be displayed)
124 W( directly, without first being stored off-screen.  For monochrome)123 W
7200 27910 MT
(images, the full contents of a bitmap are transmitted, along)
191 W( with a pair of pixel values; the image is)192 W
7200 29336 MT
(displayed in a region of a)
62 W( window with those two colors.  For color images, the full contents of a pixmap)61 W
7200 30762 MT
(can be transmitted and displayed.  In order to avoid inordinate buffer space in the server, very large)170 W
7200 32188 MT
(images must be broken into sections on the client side and displayed in separate requests.)SH
8312 34755 MT
(The CopyArea request allows)
185 W( one region of a window to be moved to \050or combined with\051 another)184 W
7200 36181 MT
(region of the same window.  This is the usual)129 W
/Helvetica-Oblique SF
28721 XM
(bitblt)SH
/Helvetica SF
(, or)
129 W( "bit block transfer" operation.  The source and)130 W
7200 37607 MT
(destination are given as rectangular regions of the window;)
82 W( the two regions have the same dimensions.)81 W
7200 39033 MT
(The operation is such that overlap of the source and destination does not affect the result.)SH
8312 41600 MT
(X provides a complex primitive for line)
90 W( drawing.  It provides for arbitrary combinations of straight and)91 W
7200 43026 MT
(curved segments, defining both open and closed shapes.  Lines)
105 W( can be)104 W
/Helvetica-Oblique SF
40253 XM
(solid)SH
/Helvetica SF
(, by drawing with a single)104 W
7200 44452 MT
(source pixel value,)62 W
/Helvetica-Oblique SF
15945 XM
(dashed)SH
/Helvetica SF
(, by alternately drawing with)
62 W( a single source pixel value and not drawing, and)63 W
/Helvetica-Oblique SF
7200 45878 MT
(patterned)SH
/Helvetica SF
(, by alternately drawing with two source pixel values.  Lines are drawn with a rectangular)
28 W( brush.)27 W
7200 47304 MT
(Clients can query the server to determine what brush shapes are)
24 W( supported; a better semantics would be)25 W
7200 48730 MT
(to support arbitrary shapes, but allow applications to query as to which shapes are most efficient.)SH
8312 51297 MT
(A final request allows an arbitrary closed shape \050such as could be)
7 W( specified in the line drawing request\051)6 W
7200 52723 MT
(to be filled with either a single source pixel)
20 W( value or a tile.  For self-intersecting shapes, the even-odd rule)21 W
7200 54149 MT
(is used: a point is inside the shape if an infinite ray with the point as)
159 W( origin crosses the path an odd)158 W
7200 55575 MT
(number of times.)SH
11 /Helvetica-Bold AF
7200 59257 MT
(6.3. Text)SH
10 /Helvetica AF
8312 60683 MT
(For high-performance text, X provides direct support for bitmap fonts.  A font consists of up)
147 W( to 256)148 W
7200 62109 MT
(bitmaps; each bitmap in a font has the same height but can vary in width.  To allow server-specific font)82 W
7200 63535 MT
(representations, clients "create" fonts by specifying a name)
116 W( rather than by downloading bitmap images)117 W
7200 64961 MT
(into the server.  An application can use an arbitrary number of fonts, but \050as with all resources\051 font)173 W
7200 66387 MT
(allocation can fail for lack of memory.  A reasonably implemented server should support)
115 W( an essentially)116 W
7200 67813 MT
(unbounded number of fonts \050e.g., by caching\051, but some)
64 W( existing server implementations are deficient in)63 W
7200 69239 MT
(this respect.  Unlike Andrew)
46 W( [7],)
SH( no heuristics are applied by the server)
46 W( when resolving a name to a font;)47 W
7200 70665 MT
(specific communities or applications may demand a variety of heuristics, and as such they belong outside)15 W
ES
%%Page: 16 16 
BS
0 SI
10 /Helvetica-Bold AF
30044 4329 MT
(16)SH
/Helvetica SF
7200 7929 MT
(the base window system.  Also unlike Andrew, the X)
49 W( server is not free to dynamically substitute one font)50 W
7200 9355 MT
(for another; we do not believe such behavior is necessary or appropriate.)SH
8312 11922 MT
(A string of text)
24 W( can be displayed using a font either as a mask or as a source.  Using a font as a mask,)23 W
7200 13348 MT
(the foreground)
101 W( \050the one bits in the bitmap\051 of each character is drawn with a single source pixel value.)102 W
7200 14774 MT
(Using a font)
194 W( as a source, the entire image of each character is drawn, using a pair of pixel values.)193 W
7200 16200 MT
(Source font output)
72 W( is provided specifically for applications using fixed-width fonts in emulating traditional)73 W
7200 17626 MT
(terminals.)SH
8312 20193 MT
(To support)
97 W( "cut and paste" operations between applications, the server provides a number of buffers)96 W
7200 21619 MT
(into which a client can read and write an arbitrary string of bytes.  \050This)
105 W( mechanism was adopted from)106 W
7200 23045 MT
(Andrew.\051 Although)
316 W( these buffers are used principally for text strings,)
19 W( the server imposes no interpretation)18 W
7200 24471 MT
(on the data, so cooperating)
251 W( applications can use the buffers to exchange such things as resource)252 W
7200 25897 MT
(identifiers and images.)SH
12 /Helvetica-Bold AF
7200 29652 MT
(7. Exposures)SH
10 /Helvetica AF
8312 31078 MT
(Given that output to obscured windows is)
77 W( possible, the issue of)76 W
/Helvetica-Oblique SF
37279 XM
(exposure)SH
/Helvetica SF
41746 XM
(must be addressed.  When)76 W
7200 32504 MT
(all \050or a piece\051 of an)
89 W( obscured window again becomes visible \050for example, as the result of the window)90 W
7200 33930 MT
(being raised\051, is)
76 W( the client or the server responsible for restoring the contents of the window?  In X, it is)75 W
7200 35356 MT
(the responsibility of the client.  When a region of a window becomes exposed, the)
196 W( server sends an)197 W
7200 36782 MT
(asynchronous event to the client, specifying the window and the region that has been exposed; the)
13 W( rest is)12 W
7200 38208 MT
(up to the application.  A trivial application might simply)
104 W( redraw the entire window; a more sophisticated)105 W
7200 39634 MT
(application would only redraw the exposed region.)SH
8312 42201 MT
(Why is)
27 W( the client responsible?  Because X imposes no structure on, or relationships between, graphics)26 W
7200 43627 MT
(operations from a client, there are only two basic mechanisms by which the server might restore window)49 W
7200 45053 MT
(contents: by)
474 W( maintaining display lists,)
98 W( and by maintaining off-screen images.  In the first approach, the)97 W
7200 46479 MT
(server essentially retains a list of all)
126 W( output requests performed on the window.  When a region of the)127 W
7200 47905 MT
(window becomes exposed, the server either re-executes all requests to the entire)
145 W( window, or only re-)144 W
7200 49331 MT
(executes requests that)
249 W( affect the region while clipping the output to that region.  In the alternative)250 W
7200 50757 MT
(approach, when a window becomes obscured the server saves)
195 W( the obscured region \050or perhaps the)194 W
7200 52183 MT
(entire window\051 in)
27 W( off-screen memory.  All subsequent output requests are executed not only to the visible)28 W
7200 53609 MT
(regions of the window,)
99 W( but to the off-screen image as well.  When an obscured region becomes visible)98 W
7200 55035 MT
(again, the off-screen copy is simply restored.)SH
8312 57602 MT
(We believe neither)
118 W( server-based approach is acceptable.  With display lists, the server is unlikely to)119 W
7200 59028 MT
(have any reasonable notion of when later output requests nullify)
188 W( earlier ones.  Either the display list)187 W
7200 60454 MT
(becomes unmanageably long, and a refresh that should appear nearly instantaneous)
38 W( instead appears as)39 W
7200 61880 MT
(a slow-motion replay, or the server spends a significant)
4 W( length of time pruning the display list, and normal-)3 W
7200 63306 MT
(case performance is)
63 W( considerably reduced.  One problem with the off-screen image approach is \050virtual\051)64 W
7200 64732 MT
(memory consumption:  on a 1024 by)
223 W( 1024 8-plane display, just one full-screen image requires one)222 W
7200 66158 MT
(megabyte of storage, and multiple overlapping windows could easily)
158 W( require many times that amount.)159 W
7200 67584 MT
(Another problem is that the cost of the implementation)
136 W( can be prohibitive.  Consider, for example, the)135 W
7200 69010 MT
(QDSS display)
55 W( [34],)
SH( which has a graphics co-processor.  In the QDSS, display memory is inaccessible to)56 W
7200 70436 MT
(the host processor.  In addition, the co-processor cannot perform operations in)
130 W( host memory, and has)129 W
7200 71862 MT
(relatively little off-screen)
201 W( memory of its own.  The only viable way to maintain off-screen images for)202 W
ES
%%Page: 17 17 
BS
0 SI
10 /Helvetica-Bold AF
30044 4329 MT
(17)SH
/Helvetica SF
7200 7929 MT
(displays like the QDSS may be to emulate the co-processor in software.  It can easily take tens of)207 W
7200 9355 MT
(thousands of lines of code to emulate a co-processor, and such emulation may execute orders)
263 W( of)264 W
7200 10781 MT
(magnitude slower than the co-processor.)SH
8312 13348 MT
(Our belief is that)
49 W( many applications can take advantage of their own information structures to facilitate)48 W
7200 14774 MT
(rapid redisplay, without)
170 W( the expense of maintaining a distinct display structure or backing-store in the)171 W
7200 16200 MT
(client or the server, and often with even better performance.  \050Sapphire)
42 W( [17])
SH( permits client)
42 W( refresh for this)41 W
7200 17626 MT
(reason.\051 For)
774 W( example, a text editor can)
248 W( redisplay directly from the source, and a VLSI editor can)249 W
7200 19052 MT
(redisplay directly from the layout and component definitions.  Many applications will be built on top of)146 W
7200 20478 MT
(high-level graphics libraries that automatically maintain the data structures necessary to implement rapid)56 W
7200 21904 MT
(redisplay. For)
536 W( example, the structured display file mechanism in VGTS could be)
129 W( supported in a client)128 W
7200 23330 MT
(library. Of)
300 W( course, pushing the responsibility back on)
11 W( the application may not simplify matters, particularly)12 W
7200 24756 MT
(when retrofitting old systems to)
178 W( a new environment.  For example, the current GKS design does not)177 W
7200 26182 MT
(provide adequate hooks for)
217 W( automatic, system-generated refresh of application windows, nor does it)218 W
7200 27608 MT
(provide an adequate mechanism for forcing refresh back on the application.)SH
8312 30175 MT
(Relying on client-controlled refresh also derives from window)
112 W( management philosophy.  Our belief is)111 W
7200 31601 MT
(that applications cannot be written with fixed top-level window)
83 W( sizes built in.  Rather, they must function)84 W
7200 33027 MT
(correctly with almost any size,)
152 W( and continue to function correctly as windows are dynamically resized.)151 W
7200 34453 MT
(This is necessary if applications are to be usable on a variety of displays under)
179 W( a variety of window)180 W
7200 35879 MT
(management policies.)
64 W( \050Of)
405 W( course, an application may need a minimum size to function reasonably, and)63 W
7200 37305 MT
(may prefer the width or)
31 W( height to be a multiple of some number; X allows the client to attach a resize hint)32 W
7200 38731 MT
(to each window to inform window managers of this.\051  Our belief is that)
56 W( most applications, for one reason)55 W
7200 40157 MT
(or another, will already have code for performing a complete redisplay of)
9 W( the window, and that it is usually)10 W
7200 41583 MT
(straightforward to modify this code to deal with partial exposures.  Similar arguments were used)
115 W( in the)114 W
7200 43009 MT
(design of both Andrew and Mex, and experience has confirmed their decision [7, 23].)SH
8312 45576 MT
(This is not to argue that the server should never maintain window contents, only that it should)
77 W( not be)78 W
/Helvetica-Oblique SF
7200 47002 MT
(required)SH
/Helvetica SF
11215 XM
(to maintain contents.  For complex imaging)
69 W( and graphics applications, efficient maintenance by)68 W
7200 48428 MT
(the server may be critical for acceptable)
7 W( performance of window management functions.  There is nothing)8 W
7200 49854 MT
(inherent in the X protocol that precludes the server from)
30 W( maintaining window contents and not generating)29 W
7200 51280 MT
(exposure events.  In the next version of X, windows will have several attributes)
29 W( to advise the server as to)30 W
7200 52706 MT
(when and how contents should be maintained.)SH
8312 55273 MT
(In X, clients)
185 W( are never informed of what regions are obscured, only of what regions have become)184 W
7200 56699 MT
(visible. Thus,)
528 W( clients have insufficient information to try and optimize output by)
125 W( only drawing to visible)126 W
7200 58125 MT
(regions. However,)
786 W( we feel this is justified on two grounds.  First, realistically, users seldom stack)254 W
7200 59551 MT
(windows such that the active ones are obscured, so)
142 W( there is little point in complicating applications to)143 W
7200 60977 MT
(optimize this case.  More importantly, allowing applications to restrict output to only)
45 W( visible regions would)44 W
7200 62403 MT
(conflict with the desire to have the server maintain obscured regions automatically when possible.)SH
8312 64970 MT
(An interesting complication with the CopyArea request \050described)
51 W( in Section 6\051 arises, having decided)52 W
7200 66396 MT
(on client refresh.)
48 W( If)
372 W( part of the source region of the CopyArea is obscured, then not all of the destination)47 W
7200 67822 MT
(region can)
107 W( be updated properly, and the client must be notified \050with an exposure event\051 so that it can)108 W
7200 69248 MT
(correct the problem.  Since output requests)
77 W( are asynchronous, care must be taken by the application to)76 W
7200 70674 MT
(handle exposure events when using CopyArea.)
27 W( In)
333 W( particular, if a region is exposed and an event sent by)28 W
ES
%%Page: 18 18 
BS
0 SI
10 /Helvetica-Bold AF
30044 4329 MT
(18)SH
/Helvetica SF
7200 7929 MT
(the server,)
220 W( a subsequent CopyArea may move all or part of the region before the event is actually)219 W
7200 9355 MT
(received by the application.  Several simple algorithms have been designed)
17 W( to deal with this situation, but)18 W
7200 10781 MT
(we will not present them here.)SH
8312 13348 MT
(Client refresh raises a visual problem in a network environment.  When a region of a window)
33 W( becomes)32 W
7200 14774 MT
(exposed, what contents should the server initially)
244 W( place in that window?  In a local, tightly-coupled)245 W
7200 16200 MT
(environment, it might be perfectly reasonable to leave the)
171 W( contents unaltered, because the client can)170 W
7200 17626 MT
(almost instantaneously begin to refresh the region.)
121 W( In)
521 W( a network environment however \050and even in a)122 W
7200 19052 MT
(local system where processes can get "swapped out" and take considerable time to swap)
216 W( back in\051,)215 W
7200 20478 MT
(inevitable delays)
45 W( can lead to visually confusing results.  For example, the user may move a window, and)46 W
7200 21904 MT
(see two images of the window on the screen)
59 W( for a significant length of time, or resize a window and see)58 W
7200 23330 MT
(no immediate change in the appearance of the screen.)SH
8312 25897 MT
(To avoid such anomalies)
100 W( in X, clients must define a)101 W
/Helvetica-Oblique SF
32329 XM
(background)SH
/Helvetica SF
37933 XM
(for every window.  The background)101 W
7200 27323 MT
(can be a single color, or it can)
31 W( be a tiling pattern.  Whenever a region of a window is exposed, the server)30 W
7200 28749 MT
(immediately paints)
149 W( the region with the background.  Users therefore see window shapes immediately,)150 W
7200 30175 MT
(even if the "contents" are slow to arrive.  Of course, many application windows have some notion of a)115 W
7200 31601 MT
(background anyway, so having the server)
239 W( initialize with a background seldom results in extraneous)240 W
7200 33027 MT
(redisplay. In)
576 W( fact, many non-leaf windows typically contain nothing but a background, and having the)148 W
7200 34453 MT
(server paint that background frees the applications from performing any redisplay at all to those windows.)SH
8312 37020 MT
(Although we believe client-generated refresh is acceptable most of the time, it does)
11 W( not always perform)12 W
7200 38446 MT
(well with momentary pop-up menus, where speed is at a premium.  To)
4 W( avoid potentially expensive refresh)3 W
7200 39872 MT
(when a menu is removed from the screen, a client can explicitly copy the region to be covered by the)120 W
7200 41298 MT
(menu into off-screen memory \050within the server\051)
138 W( before mapping the menu window.  A special unmap)137 W
7200 42724 MT
(request is used to remove the menu:)
61 W( it)
402 W( unmaps the window without affecting the contents of the screen)62 W
7200 44150 MT
(or generating exposure events.  The)
43 W( original contents are then copied back onto the screen.  In addition,)42 W
7200 45576 MT
(the client usually)39 W
/Helvetica-Oblique SF
14987 XM
(grabs)SH
/Helvetica SF
17805 XM
(the server for the entire sequence, using a request)
39 W( which freezes all other clients)40 W
7200 47002 MT
(until a corresponding ungrab request is issued \050or the)
342 W( grabbing client terminates\051.  Without this,)341 W
7200 48428 MT
(concurrent output from other clients)
93 W( to regions obscured by the menu would be lost.  Although freezing)94 W
7200 49854 MT
(other clients is in general a poor idea, it seems acceptable for momentary menus.)SH
12 /Helvetica-Bold AF
7200 53609 MT
(8. Input)SH
10 /Helvetica AF
8312 55035 MT
(We now turn to a discussion of input)
10 W( events, but first we briefly describe the support for mouse cursors.)9 W
7200 56461 MT
(Clients can define)
49 W( arbitrary shapes for use as mouse cursors.  A cursor is defined by a source bitmap, a)50 W
7200 57887 MT
(pair of pixel values with which to display the bitmap,)
84 W( a mask bitmap which defines the precise shape of)83 W
7200 59313 MT
(the image, and a coordinate within the source bitmap which defines the "center" or "hot)
181 W( spot" of the)182 W
7200 60739 MT
(cursor. Cursors)
724 W( of arbitrary size can be constructed,)
223 W( although only a portion of the cursor may be)222 W
7200 62165 MT
(displayed on some hardware.  Clients can)
10 W( query the server to determine what cursor sizes are supported,)11 W
7200 63591 MT
(but existing applications)
73 W( typically just assume a 16 by 16 image can always be displayed.  Cursors also)72 W
7200 65017 MT
(can be constructed from character images in fonts; this provides)
174 W( a simple form of named indirection,)175 W
7200 66443 MT
(allowing custom tailoring to each display without having to modify the applications.)SH
8312 69010 MT
(A window is said to)133 W
/Helvetica-Oblique SF
17758 XM
(contain)SH
/Helvetica SF
21393 XM
(the mouse)
133 W( if the hot spot of the cursor is within a visible portion of the)132 W
7200 70436 MT
(window or one of its subwindows.  The mouse is said to be)13 W
/Helvetica-Oblique SF
33658 XM
(in)SH
/Helvetica SF
34727 XM
(a window if the window contains the mouse)14 W
7200 71862 MT
(but no subwindow contains the mouse.  Every window can have a mouse cursor defined)
167 W( for it.  The)166 W
ES
%%Page: 19 19 
BS
0 SI
10 /Helvetica-Bold AF
30044 4329 MT
(19)SH
/Helvetica SF
7200 7929 MT
(server automatically)
55 W( displays the cursor of whatever window the mouse is currently in; if the window has)56 W
7200 9355 MT
(no cursor defined, the server displays the cursor of the closest ancestor with a cursor defined.)SH
8312 11922 MT
(Input is associated with windows.  Input to a given window is controlled by)
59 W( a single client, which need)58 W
7200 13348 MT
(not be the client that created the window.  Events are classified into various types,)
124 W( and the controlling)125 W
7200 14774 MT
(client selects which)
26 W( types are of interest to it.  Only events matching in type with this selection are sent to)25 W
7200 16200 MT
(the client.  When an input event is generated for a window and the controlling client has not)
29 W( selected that)30 W
7200 17626 MT
(type, the server)53 W
/Helvetica-Oblique SF
14528 XM
(propagates)SH
/Helvetica SF
19861 XM
(the event to the closest ancestor window for which some client has selected)52 W
7200 19052 MT
(the type, and sends the event to that client instead.)
46 W( Every)
372 W( event includes the window that had the event)47 W
7200 20478 MT
(type selected; this window is called the)56 W
/Helvetica-Oblique SF
25044 XM
(event window)55 W
/Helvetica SF
(. If)
388 W( the event has been propagated, the event also)55 W
7200 21904 MT
(includes the next window down in)
107 W( the hierarchy between the event window and the original window on)108 W
7200 23330 MT
(which the event was generated.)SH
11 /Helvetica-Bold AF
7200 27012 MT
(8.1. The Keyboard)SH
10 /Helvetica AF
8312 28438 MT
(For the keyboard, a client can selectively receive)
84 W( events on the press or release of a key.  Keyboard)83 W
7200 29864 MT
(events are not reported in terms)
45 W( of ASCII character codes; instead, each key is assigned a unique code,)46 W
7200 31290 MT
(and client software must)
247 W( translate these codes into the appropriate characters.  The mapping from)246 W
7200 32716 MT
(keycaps to keycodes is intended to be "universal" and predefined;)
28 W( a given keycap has the same keycode)29 W
7200 34142 MT
(on all keyboards.  Applications generally have been written to read a "keymap file" from the)
50 W( user's home)49 W
7200 35568 MT
(directory, so that users can remap the keyboard as they see fit.)SH
8312 38135 MT
(The use)
215 W( of coded keys is secondary to the ability to detect both up and down transitions on the)216 W
7200 39561 MT
(keyboard. For)
312 W( example, a common trick in window systems)
17 W( is for mouse button operations to be affected)16 W
7200 40987 MT
(by keyboard)137 W
/Helvetica-Oblique SF
13199 XM
(modifiers)SH
/Helvetica SF
17670 XM
(such as the Shift, Control, and Meta keys.  A useful)
137 W( feature of the Genera)
138 W( [31])SH
7200 42413 MT
(system is the)
39 W( use of a "mouse documentation line", which changes dynamically as modifiers are pressed)38 W
7200 43839 MT
(and released, indicating)
145 W( the function of the mouse buttons.  A base window system must provide this)146 W
7200 45265 MT
(capability. Transitions)
584 W( are not only useful on modifiers; various applications for systems other than X)152 W
7200 46691 MT
(have been designed to use "chords" \050groups)
171 W( of keys pressed simultaneously\051, and again the window)172 W
7200 48117 MT
(system should support them.)SH
8312 50684 MT
(The keyboard is always)25 W
/Helvetica-Oblique SF
19138 XM
(attached)SH
/Helvetica SF
23277 XM
(to some window \050typically the root)
25 W( window or a top-level window\051; we)24 W
7200 52110 MT
(call this window)
81 W( the)82 W
/Helvetica-Oblique SF
16418 XM
(focus)SH
/Helvetica SF
19168 XM
(window. A)
442 W( request can be used \050usually by the input manager\051 to attach the)82 W
7200 53536 MT
(keyboard to)
46 W( any window.  The window that receives keyboard input depends on both the mouse position)45 W
7200 54962 MT
(and the focus window.  If)
228 W( the mouse is in some descendant of the focus window, that descendant)229 W
7200 56388 MT
(receives the input.  If the mouse is not in a descendant of the)
164 W( focus window, then the focus window)163 W
7200 57814 MT
(receives the input, even if the mouse is outside the focus window.  For applications that wish to have the)38 W
7200 59240 MT
(mouse state modify the effect)
45 W( of keyboard input, a keyboard event contains the mouse coordinates, both)44 W
7200 60666 MT
(relative to the event window and global to the screen, as well as the state of the mouse buttons.)SH
8312 63233 MT
(To provide a reasonable user interface, keyboard events also contain)
107 W( the state of the most common)108 W
7200 64659 MT
(modifier keys:  Shift, ShiftLock, Control, and Meta.  Without this information, anomalous behavior can)155 W
7200 66085 MT
(result. If)
785 W( the user switches windows while modifier keys are down, the new client must somehow)254 W
7200 67511 MT
(determine which modifiers are down.  Placing the modifier state in the keyboard events)
193 W( solves such)192 W
7200 68937 MT
(problems, and also)
104 W( has another benefit:  most clients do not have to maintain their own shadow of the)105 W
7200 70363 MT
(modifier state,)
206 W( and so often can completely ignore key release events.  However, there is a conflict)205 W
7200 71789 MT
(between this server-maintained state and client-maintained keyboard mappings.)
202 W( In)
684 W( particular, clients)203 W
ES
%%Page: 20 20 
BS
0 SI
10 /Helvetica-Bold AF
30044 4329 MT
(20)SH
/Helvetica SF
7200 7929 MT
(cannot use non-standard keys as modifiers, or use chords without the possibility of anomalies such as)115 W
7200 9355 MT
(described above.  We believe the correct solution \050not)
58 W( yet supported in X\051 is for the server to maintain a)59 W
7200 10781 MT
(bit mask reflecting the full state of the keyboard, and)
100 W( to allow clients to read this mask.  An application)99 W
7200 12207 MT
(using chords or non-standard modifiers would request the server)
312 W( to send this mask automatically)313 W
7200 13633 MT
(whenever the mouse entered the application's window.)SH
11 /Helvetica-Bold AF
7200 17315 MT
(8.2. The Mouse)SH
10 /Helvetica AF
8312 18741 MT
(The X protocol is \050somewhat arbitrarily\051)
27 W( designed for mice with up to three buttons.  An application can)26 W
7200 20167 MT
(selectively receive events on the)
9 W( press or release of each button.  Each event contains the current mouse)10 W
7200 21593 MT
(coordinates \050both local to the window)
200 W( and global to the screen\051, the current state of all buttons and)199 W
7200 23019 MT
(modifier keys, and a timestamp which can be used, for example, to decide when a)
85 W( succession of clicks)86 W
7200 24445 MT
(constitutes a)
1 W( double or triple click.  An application can also choose to receive mouse motion events, either)SH
7200 25871 MT
(whenever the mouse is in the window, or only when particular)
150 W( buttons have also been pressed.  The)151 W
7200 27297 MT
(application cannot control the granularity of the reporting, nor)
45 W( is any minimum granularity guaranteed.  In)44 W
7200 28723 MT
(fact, typical server implementations make an effort to compact motion events, to)
291 W( minimize system)292 W
7200 30149 MT
(overhead and wired memory in device drivers.  As such, X)
143 W( may not serve adequately for fine-grained)142 W
7200 31575 MT
(tracking, such as in fast moving free-hand drawing applications.)SH
8312 34142 MT
(Even with motion)
158 W( compaction, servers can generate considerable numbers of motion events.  If an)159 W
7200 35568 MT
(application attempts to respond in real)
152 W( time to every event, it can easily get far behind relative to the)151 W
7200 36994 MT
(actual position of the mouse.  Instead,)
104 W( many applications simply treat motion events as hints.  When a)105 W
7200 38420 MT
(motion event is received, the event is simply discarded, and the client then)
7 W( explicitly queries the server for)6 W
7200 39846 MT
(the current mouse position.  In waiting for the reply, more motion events may be received; these are)
34 W( also)35 W
7200 41272 MT
(discarded. The)
416 W( client then reacts based on the queried)
69 W( mouse position.  The advantage of this scheme)68 W
7200 42698 MT
(over continuously polling the mouse position is that no CPU time)
243 W( is consumed while the mouse is)244 W
7200 44124 MT
(stationary.)SH
8312 46691 MT
(Clients can also receive an event each time the mouse enters or leaves a window.)
201 W( This)
678 W( can be)200 W
7200 48117 MT
(particularly useful in implementing)
114 W( menus.  For example, each menu item can be placed in a separate)115 W
7200 49543 MT
(subwindow of the overall menu window.)
40 W( When)
357 W( the mouse enters a subwindow, the item is highlighted in)39 W
7200 50969 MT
(some fashion \050e.g., by inverting the video sense\051, and)
127 W( when the mouse leaves the window the item is)128 W
7200 52395 MT
(restored to normal.)
53 W( Implementing)
382 W( a menu in this manner requires considerably less CPU overhead than)52 W
7200 53821 MT
(continuous polling)
125 W( of the mouse, and also less overhead than using motion events, since most motion)126 W
7200 55247 MT
(events would be within windows and thus uninteresting.)SH
8312 57814 MT
(Due to the nature of overlapping windows, and because continuous tracking by the server is)
226 W( not)225 W
7200 59240 MT
(guaranteed, the mouse may appear to move instantaneously between any pair of windows on the screen.)11 W
7200 60666 MT
(Certainly the window the)
161 W( mouse was in should be notified of the mouse leaving, and the window the)160 W
7200 62092 MT
(mouse is now in should be)
76 W( notified of the mouse entering.  However, all of the windows "in between" in)77 W
7200 63518 MT
(the hierarchy may also be)
72 W( interested in the transition.  This is useful in simplifying the structure of some)71 W
7200 64944 MT
(applications, and is necessary in implementing certain kinds of)
111 W( window managers and input managers.)112 W
7200 66370 MT
(Thus, when the mouse moves from window A to window B, with window)
223 W( W as their closest \050least\051)222 W
7200 67796 MT
(common ancestor, all ancestors of A below W also receive leave events, and)
40 W( all ancestors of B below W)41 W
7200 69222 MT
(receive enter events.)SH
8312 71789 MT
(Except for mouse motion events, it might be argued that events are infrequent enough that)
59 W( the server)58 W
ES
%%Page: 21 21 
BS
0 SI
10 /Helvetica-Bold AF
30044 4329 MT
(21)SH
/Helvetica SF
7200 7929 MT
(should always)
86 W( send all events to the client, and eliminate the complexity of selecting events.  However,)87 W
7200 9355 MT
(some applications are written with interrupt-driven input; events are received asynchronously,)
56 W( and cause)55 W
7200 10781 MT
(the current computation to be suspended so that the input can be processed.  For)
49 W( example, a text editor)50 W
7200 12207 MT
(might use interrupt-driven input, with the)
49 W( normal computation being redisplay of the window.  The receipt)48 W
7200 13633 MT
(of extraneous input events \050for example, key)
179 W( release events\051 can cause noticeable "hiccups" in such)180 W
7200 15059 MT
(redisplay.)SH
12 /Helvetica-Bold AF
7200 18814 MT
(9. Input and Window Management)SH
10 /Helvetica AF
8312 20240 MT
(There are two basic modes)
86 W( of keyboard management:)85 W
/Helvetica-Oblique SF
33592 XM
(real-estate)SH
/Helvetica SF
38679 XM
(and)SH
/Helvetica-Oblique SF
40710 XM
(listener)SH
/Helvetica SF
(. In)
448 W( real-estate mode,)85 W
7200 21666 MT
(the keyboard "follows" the mouse; keyboard input is directed to whatever window the mouse is in.)
138 W( In)556 W
7200 23092 MT
(listener mode, keyboard input is directed)
25 W( to a specific window, independent of the mouse position.  Some)24 W
7200 24518 MT
(systems provide only real-estate mode)
364 W( [1, 28],)
SH( some only listener)
364 W( mode)
365 W( [8, 17, 19, 23, 30, 31],)
SH( and)365 W
7200 25944 MT
(Andrew [7])
SH( provides both, although the mode cannot be changed during)
178 W( a session.  Both modes are)177 W
7200 27370 MT
(supported in X, and the mode can be)
107 W( changed dynamically.  Real-estate mode is the default behavior,)108 W
7200 28796 MT
(with the root window as)
78 W( the focus window, as described in the previous section.  An input manager can)77 W
7200 30222 MT
(also make some other \050typically top-level\051 window the focus)
262 W( window, yielding listener mode.  Note)263 W
7200 31648 MT
(however, that in listener mode in X, the client controlling the focus window can)
240 W( still get real-estate)239 W
7200 33074 MT
(behavior for subwindows, if desired; this capability has proven useful in several applications.)SH
8312 35641 MT
(The primary function)
102 W( of a window manager is reconfiguration:  restacking, resizing, and repositioning)103 W
7200 37067 MT
(top-level windows.  The configuration of nested windows is assumed to be application-specific, and under)16 W
7200 38493 MT
(control of the)
20 W( applications.  There are two broad categories of window managers:  manual and automatic.)21 W
7200 39919 MT
(A manual window manager)
40 W( is "passive", and simply provides an interface to allow the user to manipulate)39 W
7200 41345 MT
(the desktop; windows)
98 W( can be resized and reorganized at will.  The initial size and position of a window)99 W
7200 42771 MT
(typically \050but not always\051 is)
76 W( under user or application control.  Automatic window managers are "active",)75 W
7200 44197 MT
(and operate for the most part)
229 W( without human interaction; size and position at window creation, and)230 W
7200 45623 MT
(reconfiguration at window destruction, are chosen by the)
92 W( system.  Automatic managers typically tile the)91 W
7200 47049 MT
(screen with windows, such that no two windows)
99 W( overlap, automatically adjusting the layout as windows)100 W
7200 48475 MT
(are created and destroyed.  Andrew)
111 W( [7],)
SH( Star)
111 W( [24],)
SH( and Cedar)
111 W( [32])
SH( provide automatic management, plus)111 W
7200 49901 MT
(limited manual reconfiguration capability.)SH
8312 52468 MT
(Existing window managers)
414 W( for X are manual.  Automatic management that is transparent to)415 W
7200 53894 MT
(applications cannot be accomplished reasonably in X; future)
283 W( support for automatic management is)282 W
7200 55320 MT
(discussed in Section 10.  In the current X)
114 W( design, clients are responsible for initially sizing and placing)115 W
7200 56746 MT
(their top-level windows, not)
227 W( window managers.  In this way, applications continue to work when no)226 W
7200 58172 MT
(window manager is present.  Typically, the)
95 W( user either specifies geometry information in the application)96 W
7200 59598 MT
(command line, or uses the mouse to sweep)
24 W( out a rectangle on the screen.  \050For the latter, the application)23 W
7200 61024 MT
(grabs the mouse, as described below.\051)SH
11 /Helvetica-Bold AF
7200 64706 MT
(9.1. Mouse-Driven Management)SH
10 /Helvetica AF
8312 66132 MT
(Existing managers are)
368 W( primarily mouse-driven, and are based on the ability to "steal" events.)369 W
7200 67558 MT
(Specifically, a manager \050or any)
4 W( other client\051 can)3 W
/Helvetica-Oblique SF
28625 XM
(grab)SH
/Helvetica SF
30907 XM
(a mouse button in combination with a set of modifier)3 W
7200 68984 MT
(keys, with the following effect.  Whenever the modifier keys are down and the button is pressed, the)
3 W( event)4 W
7200 70410 MT
(is reported to the grabbing client, regardless of what window the)
79 W( mouse is in.  All mouse-related events)78 W
7200 71836 MT
(continue to be sent to that client until the button is)
39 W( released.  As part of the grab, the client also specifies)40 W
ES
%%Page: 22 22 
BS
0 SI
10 /Helvetica-Bold AF
30044 4329 MT
(22)SH
/Helvetica SF
7200 7929 MT
(a mouse cursor to be)
20 W( used for the duration of the grab, and a window to be used as the event window.  A)19 W
7200 9355 MT
(manager specifies the root window as the event window when grabbing)
353 W( buttons; with the event)354 W
7200 10781 MT
(propagation semantics described in Section 8, the grabbed events)
167 W( contain not only the global mouse)166 W
7200 12207 MT
(coordinates, but)
140 W( also the top-level application window \050if any\051 containing the mouse.  This is sufficient)141 W
7200 13633 MT
(information to manipulate top-level windows.)SH
8312 16200 MT
(Using this button-grab mechanism, several different management interfaces)
51 W( have been built, including)50 W
7200 17626 MT
(a "programmable" interface)
18 W( [5])
SH( allowing the user to assign individual commands)
18 W( or user-defined menus of)19 W
7200 19052 MT
(commands to any number of button/modifier combinations.)
235 W( For)
746 W( example, a button click \050press and)234 W
7200 20478 MT
(release without intervening motion\051 might be interpreted as a)
52 W( command to raise or lower a window, or to)53 W
7200 21904 MT
(attach the keyboard; a press/motion/release sequence might be interpreted as a command to)
147 W( move a)146 W
7200 23330 MT
(window to a new position; or a)
2 W( button press might cause a menu to pop up, with the selection indicated by)3 W
7200 24756 MT
(the mouse position at the release of the button.)
90 W( By)
456 W( allowing both specific commands and menus to be)89 W
7200 26182 MT
(bound to buttons, a range of interfaces can be constructed to satisfy both "expert" and "novice" users.)SH
8312 28749 MT
(Another form of manager simply)
58 W( displays a static menu bar along the top of the screen, with items for)59 W
7200 30175 MT
(such operations as moving a window and attaching the keyboard.  The menu)
33 W( is used in combination with)32 W
7200 31601 MT
(a mouse-grab primitive, with which a client can unilaterally grab the)
226 W( mouse and then later explicitly)227 W
7200 33027 MT
(release it; during such a mouse-grab, events are redirected to the grabbing client, just as for button-grabs.)SH
7200 34453 MT
(When the user clicks)
8 W( on a menu bar item with any button, the manager unilaterally grabs the mouse.  The)9 W
7200 35879 MT
(user then uses the mouse to)
44 W( execute the specific command.  For example, having clicked on the "move")43 W
7200 37305 MT
(item, the user indicates)
64 W( the window to move by placing the mouse in the window and pressing a button,)65 W
7200 38731 MT
(then indicates the new position)
209 W( by moving the mouse and releasing the button.  The manager then)208 W
7200 40157 MT
(releases the mouse.)SH
11 /Helvetica-Bold AF
7200 43839 MT
(9.2. Icons)SH
10 /Helvetica AF
8312 45265 MT
(One important "resizing" operation performed by a window manager is transforming)
116 W( a window into a)117 W
7200 46691 MT
(small icon and back again.  In X, icons are merely windows.  Transforming a window into an icon)
53 W( simply)52 W
7200 48117 MT
(involves unmapping the window and mapping its associated icon.  The association between a)
131 W( window)132 W
7200 49543 MT
(and its icon is maintained in the server, rather than)
19 W( the window manager, and either the application or the)18 W
7200 50969 MT
(manager can provide the icon.  In this way, the manager can provide a default icon form)
35 W( for most clients,)36 W
7200 52395 MT
(but clients can provide)
1 W( their own if desired, possibly with dynamic rather than static contents.  The client is)SH
7200 53821 MT
(still insulated from management policy, even if it)
215 W( provides the icon:  the manager is responsible for)216 W
7200 55247 MT
(positioning, mapping, and unmapping the icon, and the client is responsible only for displaying the)254 W
7200 56673 MT
(contents.)SH
8312 59240 MT
(The icon state is maintained in the server not only to allow clients to)
8 W( provide icons, but to avoid the loss)9 W
7200 60666 MT
(of state if the window manager should terminate abnormally.  When a window manager terminates, any)78 W
7200 62092 MT
(windows it has created are destroyed, including icon windows.  With knowledge of icons,)
66 W( the server can)67 W
7200 63518 MT
(detect when an)
101 W( icon is destroyed, and automatically remap the associated client window.  Without this,)100 W
7200 64944 MT
(abnormal termination of the window manager would result in "lost" windows.)SH
ES
%%Page: 23 23 
BS
0 SI
10 /Helvetica-Bold AF
30044 4329 MT
(23)SH
11 SS 
7200 8002 MT
(9.3. Race Conditions)SH
10 /Helvetica AF
8312 9428 MT
(There are many race conditions that must be)
68 W( dealt with in input and window management, due to the)69 W
7200 10854 MT
(asynchronous nature of event handling.)
223 W( For)
722 W( example, if a manager attempts to grab the mouse in)222 W
7200 12280 MT
(response to a press of a button, the mouse-grab request might not reach the server until)
46 W( after the button)47 W
7200 13706 MT
(is released,)
42 W( and intervening mouse events would be missed.  Or, if the user clicks on a window to attach)41 W
7200 15132 MT
(the keyboard there, and then immediately begins typing, the first few keystrokes)
85 W( might occur before the)86 W
7200 16558 MT
(manager actually responds to the)
244 W( click and the server actually moves the keyboard focus.  A final)243 W
7200 17984 MT
(example is a simple interface in which clicking on a window lowers it.  Given a stack of three windows,)
3 W( the)4 W
7200 19410 MT
(user might rapidly click twice in the same spot,)
30 W( expecting the top two windows to be lowered.  Unless the)29 W
7200 20836 MT
(first click is sent to the)
52 W( manager and the resulting request to lower is processed by the server before the)53 W
7200 22262 MT
(second click takes place, the event window for the second click)
34 W( will be the same as for the first click, and)33 W
7200 23688 MT
(the manager will lower the first window twice.)SH
8312 26255 MT
(A work-around for the last example, used by existing managers,)
17 W( is to ignore the event window reported)18 W
7200 27681 MT
(in most events.  Instead, the global mouse coordinates reported in the event are used in a follow-up query)3 W
7200 29107 MT
(request to determine which top-level window now contains that coordinate.  However, not all)
278 W( race)279 W
7200 30533 MT
(conditions have)
192 W( acceptable solutions within the current X design.  For a general solution, it must be)191 W
7200 31959 MT
(possible for the manager to synchronize operations explicitly with event processing)
137 W( in the server.  For)138 W
7200 33385 MT
(example, a manager might specify that,)
102 W( at the press of a button, event processing in the server should)101 W
7200 34811 MT
(cease until an explicit acknowledgment is received from the manager.)SH
12 /Helvetica-Bold AF
7200 38566 MT
(10. Future)SH
10 /Helvetica AF
8312 39992 MT
(Based on critiques from numerous universities and commercial)
47 W( firms, a fairly extensive evaluation and)48 W
7200 41418 MT
(redesign of the X protocol has been underway since)
48 W( May 1986.  Our desire is to define a "core" protocol)47 W
7200 42844 MT
(that can serve as a)
58 W( standard for window system construction over the next several years.  We expect to)59 W
7200 44270 MT
(present the rationale for this new design in the very near future, once it has been validated by at least a)61 W
7200 45696 MT
(preliminary implementation.  In this section, we highlight the major protocol changes.)SH
11 /Helvetica-Bold AF
7200 49378 MT
(10.1. Resource Allocation)SH
10 /Helvetica AF
8312 50804 MT
(Since the server is responsible)
21 W( for assigning identifiers to resources, each resource allocation currently)22 W
7200 52230 MT
(requires a round-trip time to perform.  For applications that allocate many resources, this causes a)230 W
7200 53656 MT
(considerable start-up delay.  For example, a multi-pane menu)
238 W( might consist of dozens of windows,)239 W
7200 55082 MT
(numerous fonts, and several different mouse cursors, leading to a delay of one second or longer.)SH
8312 57649 MT
(In retrospect, this is the most significant)
249 W( defect in the design of X. To get around these delays,)248 W
7200 59075 MT
(programming interfaces have been augmented to provide "batch mode" operations.)
52 W( If)
384 W( several resources)53 W
7200 60501 MT
(must be created, but there are no inter-dependencies among the allocation)
78 W( requests, all of the requests)77 W
7200 61927 MT
(are sent in a batch, and then all of the replies are received.  This effectively reduces the delay to a)
29 W( single)30 W
7200 63353 MT
(round-trip time.)SH
8312 65920 MT
(A better solution)
14 W( to this problem is to make clients generate the identifiers.  When the client establishes)13 W
7200 67346 MT
(a connection to the server, it is given a specific subrange from which it can allocate.)
117 W( This)
513 W( change will)118 W
7200 68772 MT
(significantly improve start-up times without affecting applications, as identifiers can)
107 W( be generated inside)106 W
7200 70198 MT
(low-level libraries without changing programming interfaces.)SH
ES
%%Page: 24 24 
BS
0 SI
10 /Helvetica-Bold AF
30044 4329 MT
(24)SH
11 SS 
7200 8002 MT
(10.2. Transparent Windows)SH
10 /Helvetica AF
8312 9428 MT
(One use of transparent windows is)
207 W( as clipping regions.  However, they are unsatisfactory for this)208 W
7200 10854 MT
(purpose because every coordinate in a graphics request must be translated by the)
74 W( client from the "real")73 W
7200 12280 MT
(window's origin to the transparent window's origin.  A better approach to clipping)
191 W( regions is to allow)192 W
7200 13706 MT
(clients to create clipping regions and attach them to all graphics requests.  As noted)
170 W( in Section 6, X)169 W
7200 15132 MT
(currently allows a clipping region in the form of a bitmap to be attached to)
182 W( a few graphics requests.)183 W
7200 16558 MT
(Allowing a clipping region, specified either as)
223 W( a bitmap or a list of rectangles, to be attached to all)222 W
7200 17984 MT
(graphics requests provides a more uniform mechanism.)SH
8312 20551 MT
(The major use of transparent windows)
173 W( to date is actually as inexpensive opaque windows.  In the)174 W
7200 21977 MT
(current server implementation, transparent windows can)
107 W( be created and transformed significantly faster)106 W
7200 23403 MT
(than opaque windows.  Because of this, transparent windows)
190 W( are often used when opaque windows)191 W
7200 24829 MT
(would otherwise be adequate.  We believe a new implementation of)
334 W( the server will improve the)333 W
7200 26255 MT
(performance of opaque windows to the point that this will no longer be necessary.)SH
8312 28822 MT
(With explicit clipping)
240 W( regions added for graphics, and the performance advantages of transparent)241 W
7200 30248 MT
(windows reduced, the only)
271 W( remaining use of transparent windows is for input \050and cursor\051 control.)270 W
7200 31674 MT
(Various applications)
89 W( want relatively fine-grained input control, and such control must not affect graphics)90 W
7200 33100 MT
(output. Close)
294 W( control of cursor images and mouse motion events seems)
8 W( particularly important.  However,)7 W
7200 34526 MT
(the vast majority of the time control naturally)
16 W( is associated with normal window boundaries, so it would be)17 W
7200 35952 MT
(unwise to divorce input control completely from windows.  As such, the new protocol provides)
16 W( "input-only")15 W
7200 37378 MT
(windows, which act like normal windows for the purposes of input and cursor control,)
13 W( but which cannot be)14 W
7200 38804 MT
(used as a)
50 W( source or destination in graphics requests, and which are completely invisible as far as output)49 W
7200 40230 MT
(is concerned.)SH
11 /Helvetica-Bold AF
7200 43912 MT
(10.3. Color)SH
10 /Helvetica AF
8312 45338 MT
(X originally was not designed to deal with direct-color displays.)
155 W( Direct-color)
589 W( displays typically have)156 W
7200 46764 MT
(between 12)
75 W( and 36 bits per pixel; the pixel value consists of three subfields, which are used as indexes)74 W
7200 48190 MT
(into three independent color maps: one for red intensities, one for green, and one for blue.)
43 W( Some)
365 W( direct-)44 W
7200 49616 MT
(color displays also have a fourth subfield, sometimes referred)
200 W( to as "z-channel" information, used to)199 W
7200 51042 MT
(control attributes such as blending or chroma keying.  We now understand how to incorporate direct-color)15 W
7200 52468 MT
(displays without z-channel information into X, in such a way that the)
30 W( differences between direct-color and)29 W
7200 53894 MT
(pseudo-color color maps need not be apparent to the)
91 W( application, yet still allowing all of the usual color)92 W
7200 55320 MT
(map tricks to played.)SH
8312 57887 MT
(At present)
122 W( there is only one color map for all applications, and color applications fail when this map)121 W
7200 59313 MT
(gets full.  Although dozens of applications typically)
55 W( can be run under X within a single 8-bit pseudo-color)56 W
7200 60739 MT
(map, a single map is clearly unacceptable when dealing with small color maps, or)
334 W( with multiple)333 W
7200 62165 MT
(applications \050e.g., CAD tools\051 that need large portions of)
212 W( the color map.  The solution is to support)213 W
7200 63591 MT
(multiple virtual color maps,)
291 W( still permitting applications to coexist within any map, but allowing the)290 W
7200 65017 MT
(possibility that)
149 W( not all applications show true color simultaneously.  This also matches next-generation)150 W
7200 66443 MT
(displays, which actually support multiple color maps in hardware [37].)SH
ES
%%Page: 25 25 
BS
0 SI
10 /Helvetica-Bold AF
30044 4329 MT
(25)SH
11 SS 
7200 8002 MT
(10.4. Graphics)SH
10 /Helvetica AF
8312 9428 MT
(Perhaps the biggest mistake in the graphics area was failing to support)
256 W( fonts with kerning \050side)255 W
7200 10854 MT
(bearings\051. For)
428 W( example,)
75 W( a relatively complete emulation of the Andrew programming interface was built)76 W
7200 12280 MT
(for X, but Andrew applications depend heavily)
66 W( on kerned fonts.  There are other deficiencies that will be)65 W
7200 13706 MT
(corrected. For)
354 W( example, large glyph-sets \050e.g., Japanese\051 will be)
38 W( supported, as well as stippling \050using a)39 W
7200 15132 MT
(clip mask constructed by tiling a region with a bitmap\051.  The notions of line width, join style, and)
28 W( end style)27 W
7200 16558 MT
(found in PostScript [22] are usually preferred to brush shapes for line drawing, and will be supported.)SH
8312 19125 MT
(In an attempt to support a wide range of devices, the exact path followed for lines and filled shapes)111 W
7200 20551 MT
(was originally left undefined in X \050the class of curve was not even specified\051.)
190 W( Different)
656 W( devices use)189 W
7200 21977 MT
(slightly different algorithms to draw straight)
144 W( lines, and it seemed better to have high performance with)145 W
7200 23403 MT
(minor variation than to have uniformity with poor performance.  Relatively few devices support)
187 W( curve)186 W
7200 24829 MT
(drawing in hardware, but some support it in firmware, and again)
135 W( performance seemed more important)136 W
7200 26255 MT
(than accuracy.)
116 W( In)
509 W( retrospect, however, allowing such device dependent behavior was a poor decision.)115 W
7200 27681 MT
(The vast majority of applications draw lines aligned on an axis,)
15 W( and speed and precision are not an issue.)16 W
7200 29107 MT
(The applications that do)
1 W( require complex shapes also require predictable results, so precise specifications)SH
7200 30533 MT
(are important.)SH
8312 33100 MT
(A notable)
30 W( feature missing in X is the ability to perform graphics operations off screen.  The reasons for)31 W
7200 34526 MT
(this are)
67 W( essentially the same as those presented when discussing exposures in Section 7.  In particular,)66 W
7200 35952 MT
(not all graphics co-processors can operate)
202 W( on host memory, and emulating such processors can be)203 W
7200 37378 MT
(expensive. However,)
350 W( application builders have demanded this capability, and)
36 W( the demand appears to be)35 W
7200 38804 MT
(sufficient leverage to convince server implementors to provide the capability.  Off-screen graphics will be)48 W
7200 40230 MT
(possible in the new protocol, although the amount)
458 W( of off-screen memory and its performance)457 W
7200 41656 MT
(characteristics may vary widely.  In addition, the protocol is being extended to allow the manipulation of)80 W
7200 43082 MT
(both images and windows of varying depths.  For example,)
59 W( a server might support depths of 1, 4, 8, 12,)58 W
7200 44508 MT
(and 24 bits.  This)
76 W( allows imaging applications to transmit data more compactly, allows for more efficient)77 W
7200 45934 MT
(memory utilization in the server, and provides a match with next-generation display hardware.)SH
8312 48501 MT
(A common)
67 W( debate in graphics systems is whether and where to have state.  Should parameters such)66 W
7200 49927 MT
(as logic function, plane mask, source pixel value or tile, tiling)
12 W( origin, font, line width and style, and clipping)13 W
7200 51353 MT
(region be explicit in every request or collected into a)
24 W( state object?  The current X protocol is stateless, for)23 W
7200 52779 MT
(the following reasons:  both state and stateless)
68 W( programming interfaces can be built easily on top of the)69 W
7200 54205 MT
(protocol; the currently supported graphics requests have just few enough parameters that they can)
131 W( be)130 W
7200 55631 MT
(represented compactly; and the initial)
55 W( set of displays we were interested in \050and the implementations we)56 W
7200 57057 MT
(had in mind for them\051 would not benefit from the addition of)
173 W( state.  However, we now believe that a)172 W
7200 58483 MT
(state-based protocol is generally superior, as it handles complex graphics gracefully and allows)394 W
7200 59909 MT
(significantly faster implementations on some displays.)SH
11 /Helvetica-Bold AF
7200 63591 MT
(10.5. Management)SH
10 /Helvetica AF
8312 65017 MT
(An obvious interface style presently not)
348 W( supported in X is the ability to use the keyboard for)347 W
7200 66443 MT
(management commands.  To allow this, a key-grab mechanism, akin to the button-grab)
214 W( mechanism)215 W
7200 67869 MT
(described in Section 9, will be provided.  To)
14 W( allow such styles as using the first button click in a window to)13 W
7200 69295 MT
(attach the keyboard, both button-grabs and key-grabs have been extended to apply to)
210 W( specific sub-)211 W
7200 70721 MT
(hierarchies, rather than always to the entire screen.  To handle the kinds of race conditions)
59 W( described in)58 W
ES
%%Page: 26 26 
BS
0 SI
10 /Helvetica-Bold AF
30044 4329 MT
(26)SH
/Helvetica SF
7200 7929 MT
(Section 9, a general event synchronization mechanism has been incorporated into the grab mechanisms.)SH
8312 10496 MT
(To support automatic window management, a manager must be able to intercept certain)
47 W( management)48 W
7200 11922 MT
(requests from clients \050such as mapping or moving a window\051 before they are executed)
20 W( by the server, and)19 W
7200 13348 MT
(to be notified about others \050such as)
130 W( unmapping a window\051 after they are executed.  In addition, some)131 W
7200 14774 MT
(managers want to provide uniform title bars and border decorations)
157 W( automatically.  To allow this, it is)156 W
7200 16200 MT
(useful to be able to "splice" hierarchies:  to move a window from one parent to another.  To allow input)84 W
7200 17626 MT
(managers and window managers to be implemented as separate applications, the ability)
197 W( for multiple)196 W
7200 19052 MT
(clients to select events on the same)
58 W( window is being added.  For example, both a window manager and)59 W
7200 20478 MT
(an input manager might be interested in the unmapping or destruction of a window.)SH
11 /Helvetica-Bold AF
7200 24160 MT
(10.6. Extensibility)SH
10 /Helvetica AF
8312 25586 MT
(The information that input and window managers might desire)
71 W( from applications is quite varied, and it)70 W
7200 27012 MT
(would be)
107 W( a mistake to try and define a fixed set.  Similarly, the information paths between applications)108 W
7200 28438 MT
(\050e.g., in support of "cut and paste"\051 need to be flexible.  To this end, we are adding a Lisp-ish property)95 W
7200 29864 MT
(list [26])
SH( mechanism to windows, and the event)
70 W( mechanism is being augmented to provide a simple form)71 W
7200 31290 MT
(of inter-client communication.)SH
8312 33857 MT
(The new X protocol explicitly continues to avoid certain areas, such as)
56 W( 3-D graphics and anti-aliasing.)55 W
7200 35283 MT
(However, a general mechanism has been designed to allow)
17 W( extension libraries to be included in a server.)18 W
7200 36709 MT
(The intention is that all servers implement the "core" protocol, but each server can)
205 W( provide arbitrary)204 W
7200 38135 MT
(extensions. If)
412 W( an)
67 W( extension becomes widely accepted by the X community, it can be adopted as part of)68 W
7200 39561 MT
(the core.  Each extension library is)
84 W( assigned a global name, and an application can query the server at)83 W
7200 40987 MT
(run-time to determine if a particular extension is present.)
10 W( Request)
299 W( opcodes and event types are allocated)11 W
7200 42413 MT
(dynamically, so that applications need not be modified to execute in each new environment.)SH
12 /Helvetica-Bold AF
7200 46168 MT
(11. Summary)SH
10 /Helvetica AF
8312 47594 MT
(The X Window System provides high-performance, high-level, device-independent)
373 W( graphics.  A)372 W
7200 49020 MT
(hierarchy of resizable, overlapping windows allows a wide variety of application and)
37 W( user interfaces to be)38 W
7200 50446 MT
(built easily.  Network-transparent access to the display provides)
287 W( an important degree of functional)286 W
7200 51872 MT
(separation, without significantly affecting performance, that is crucial to building applications for a)329 W
7200 53298 MT
(distributed environment.  To a reasonable)
287 W( extent, desktop management can be custom tailored to)286 W
7200 54724 MT
(individual environments, without modifying the base system and typically without affecting applications.)SH
8312 57291 MT
(To date, the X design and implementation effort has focused on the)
10 W( base window system, as described)11 W
7200 58717 MT
(in this paper, and in essential applications and programming interfaces.  The design of the)
215 W( network)214 W
7200 60143 MT
(protocol, the design and implementation of device-independent layer of server,)
21 W( and the implementation of)22 W
7200 61569 MT
(several applications and a prototype window manager,)
91 W( were carried out by the first author.  The design)90 W
7200 62995 MT
(and implementation of the C programming interface, the)
205 W( implementation of major portions of several)206 W
7200 64421 MT
(applications, and the coordination of efforts within Project Athena and)
156 W( Digital, were carried out by the)155 W
7200 65847 MT
(second author.  In addition, many other persons from Project Athena, the Laboratory)
242 W( for Computer)243 W
7200 67273 MT
(Science, and institutions outside MIT have contributed software.)SH
8312 69840 MT
(Necessary applications)
29 W( such as window managers and VT100 and Tektronics 4014 terminal emulators)28 W
7200 71266 MT
(have been created, and numerous existing applications, such as text editors and VLSI layout)
115 W( systems,)116 W
ES
%%Page: 27 27 
BS
0 SI
10 /Helvetica-Bold AF
30044 4329 MT
(27)SH
/Helvetica SF
7200 7929 MT
(have been ported to the X environment.  Although several different menu packages have been)361 W
7200 9355 MT
(implemented, we are only now)
78 W( beginning to see a rich library of tools \050scroll bars, frames, panels, more)79 W
7200 10781 MT
(menus, etc.\051 to facilitate the)
175 W( rapid construction of high-quality user interfaces.  Tool building is taking)174 W
7200 12207 MT
(place at many sites, and several universities are now)
39 W( attempting to unify window systems work with X as)40 W
7200 13633 MT
(a base, so that such tools can be shared.)SH
8312 16200 MT
(The use of X has grown far beyond anything we had imagined.  Digital has incorporated X into a)179 W
7200 17626 MT
(commercial product, and other manufacturers are)
67 W( following suit.  With the appearance of such products,)68 W
7200 19052 MT
(and the release of complete X sources on the Berkeley 4.3 Unix distribution tapes, it)
28 W( is no longer feasible)27 W
7200 20478 MT
(to track all X use and development.  Existing applications written)
58 W( in C are known to have been ported to)59 W
7200 21904 MT
(seven machine architectures of)
271 W( more than twelve manufacturers, and the C server to six machine)270 W
7200 23330 MT
(architectures and more than sixteen display architectures.  In most)
24 W( cases the code is running under Unix,)25 W
7200 24756 MT
(but other)
138 W( operating systems are also involved.  In addition, relatively complete server implementations)137 W
7200 26182 MT
(exist in two)
52 W( Lisp dialects.  Apart from designing the system to be portable, a large part of this success is)53 W
7200 27608 MT
(due to MIT's decision to)
164 W( distribute X sources without any licensing restrictions, and the willingness of)163 W
7200 29034 MT
(people in both educational and commercial institutions to contribute code without restrictions.)SH
/Helvetica-Bold SF
8312 31601 MT
(Acknowledgments)SH
/Helvetica SF
8312 34168 MT
(Our thanks go to the many people who have contributed to the)
89 W( success of X. Particular thanks go to)90 W
7200 35594 MT
(those who have made significant contributions to the non-proprietary)
269 W( implementation:  Paul Asente)268 W
7200 37020 MT
(\050Stanford University\051, Scott Bates \050Brown University\051, Mike)
130 W( Braca \050Brown\051, Dave Bundy \050Brown\051, Dave)131 W
7200 38446 MT
(Carver \050Digital\051, Tony)
141 W( Della Fera \050Digital\051, Mike Gancarz \050Digital\051, James Gosling \050Sun Microsystems\051,)140 W
7200 39872 MT
(Doug Mink \050Smithsonian Astrophysical Observatory\051, Bob)
41 W( McNamara \050Digital\051, Ron Newman \050MIT\051, Ram)42 W
7200 41298 MT
(Rao \050Digital\051, Dave)
108 W( Rosenthal \050Sun\051, Dan Stone \050Brown\051, Stephen Sutphen \050University of Alberta\051, and)107 W
7200 42724 MT
(Mark Vandevoorde \050MIT\051.)SH
8312 45291 MT
(Special thanks go to Digital Equipment Corporation.  A redesign)
7 W( of the protocol and a reimplementation)8 W
7200 46717 MT
(of the server to deal with)
41 W( color and to increase performance was made possible with funding \050in the form)40 W
7200 48143 MT
(of hardware\051 from Digital.  To their credit,)
196 W( all of the resulting device-independent code remained the)197 W
7200 49569 MT
(property of MIT.)SH
ES
%%Page: 28 28 
BS
0 SI
10 /Helvetica-Bold AF
30044 4329 MT
(28)SH
13 SS 
27095 8148 MT
(References)SH
10 SS 
7200 10681 MT
(1.)SH
/Helvetica-Oblique SF
8590 XM
(???)SH
/Helvetica SF
11092 XM
(Apollo, ???)SH
/Helvetica-Bold SF
7200 12553 MT
(2.)SH
/Helvetica SF
8590 XM
(Asente, P.  W Reference Manual.  Stanford University, 1984. internal document.)SH
/Helvetica-Bold SF
7200 14425 MT
(3.)SH
/Helvetica SF
8590 XM
(Balkovich, E., Lerman, S., and Parmelee, R.  "Computing in Higher Education: The Athena)SH
7200 15568 MT
(Experience".)SH
/Helvetica-Oblique SF
13391 XM
(Communications of the ACM 28)SH
/Helvetica SF
(, 11 \050Nov. 1985\051.)SH
/Helvetica-Bold SF
7200 17440 MT
(4.)SH
/Helvetica SF
8590 XM
(Cheriton, D.  "The V Kernel: A Software Base for Distributed Systems".)SH
/Helvetica-Oblique SF
40479 XM
(IEEE Software 1)SH
/Helvetica SF
(, 2 \050April)SH
7200 18583 MT
(1984\051.)SH
/Helvetica-Bold SF
7200 20455 MT
(5.)SH
/Helvetica SF
8590 XM
(Gancarz, M.  UWM: A User Interface for X Windows.  Summer Conference Proceedings, Atlanta,)SH
7200 21598 MT
(USENIX Association, 1986.)SH
/Helvetica-Bold SF
7200 23470 MT
(6.)SH
/Helvetica SF
8590 XM
(Gettys, J.  Problems Implementing Window Systems in Unix.  Winter Conference Proceedings,)SH
7200 24613 MT
(Denver, USENIX Association, 1986.)SH
/Helvetica-Bold SF
7200 26485 MT
(7.)SH
/Helvetica SF
8590 XM
(Gosling, J. and Rosenthal, D.  A Window-Manager for Bitmapped Displays and Unix.  In)SH
/Helvetica-Oblique SF
47661 XM
(Methodology)SH
7200 27628 MT
(of Window-Managers)SH
/Helvetica SF
(, F. R. A. Hopgood et al, Eds., Springer-Verlag, 1986.)SH
/Helvetica-Bold SF
7200 29500 MT
(8.)SH
/Helvetica SF
8590 XM
(Hawley, M. J., and Leffler, S. J.  Windows for Unix at Lucasfilm.  Summer Conference Proceedings,)SH
7200 30643 MT
(Portland, USENIX Association, 1985.)SH
/Helvetica-Bold SF
7200 32515 MT
(9.)SH
/Helvetica-Oblique SF
8590 XM
(Information Processing: Graphical Kernel System \050GKS\051 - Functional Description.)SH
/Helvetica SF
45380 XM
(DIS 7942,)SH
7200 33658 MT
(International Standards Organisation, 1982.)SH
/Helvetica-Bold SF
7200 35530 MT
(10.)SH
/Helvetica SF
9146 XM
(Lantz, K.A. and Nowicki, W. I.  "Structured Graphics for Distributed Systems".)SH
/Helvetica-Oblique SF
43924 XM
(ACM Transactions on)SH
7200 36673 MT
(Graphics 3)SH
/Helvetica SF
(, 1 \050Jan. 1984\051.)SH
/Helvetica-Bold SF
7200 38545 MT
(11.)SH
/Helvetica SF
9146 XM
(Levy, H.  "VAXstation: A General-Purpose Raster Graphics Architecture".)SH
/Helvetica-Oblique SF
42091 XM
(ACM Transactions on)SH
7200 39688 MT
(Graphics 3)SH
/Helvetica SF
(, 1 \050Jan. 1984\051.)SH
/Helvetica-Bold SF
7200 41560 MT
(12.)SH
/Helvetica SF
9146 XM
(Lipkie, D. E., Evans, S. R., Newlin, J. K., and Weissman, R. L.  "Star Grapics: An Object-Oriented)SH
7200 42703 MT
(Implementation".)SH
/Helvetica-Oblique SF
15225 XM
(Computer Graphics 16)SH
/Helvetica SF
(, 3 \050July 1982\051.)SH
/Helvetica-Bold SF
7200 44575 MT
(13.)SH
/Helvetica SF
9146 XM
(Liskov, B. and Scheifler, R.  "Guardians and Actions: Linquistic Support for Robust, Distributed)SH
7200 45718 MT
(Programs".)SH
/Helvetica-Oblique SF
12723 XM
(ACM Transactions on Programming Languages and Systems 5)SH
/Helvetica SF
(, 3 \050July 1983\051.)SH
/Helvetica-Bold SF
7200 47590 MT
(14.)SH
/Helvetica-Oblique SF
9146 XM
(???)SH
/Helvetica SF
11648 XM
(MassComp, Inc., ???)SH
/Helvetica-Bold SF
7200 49462 MT
(15.)SH
/Helvetica SF
9146 XM
(Moon, D.  Chaosnet.  AI Memo 628, MIT Artificial Intelligence Laboratory, June, 1981.)SH
/Helvetica-Bold SF
7200 51334 MT
(16.)SH
/Helvetica SF
9146 XM
(Morris, J., et al.  "Andrew: A Distributed Personal Computing Environment".)SH
/Helvetica-Oblique SF
42979 XM
(Communications of the)SH
7200 52477 MT
(ACM 29)SH
/Helvetica SF
(, 3 \050March 1986\051.)SH
/Helvetica-Bold SF
7200 54349 MT
(17.)SH
/Helvetica SF
9146 XM
(Myers, B.  Issues in Window Management Design and Implementation.  In)SH
/Helvetica-Oblique SF
42215 XM
(Methodology of)SH
7200 55492 MT
(Window-Managers)SH
/Helvetica SF
(, F. R. A. Hopgood et al, Eds., Springer-Verlag, 1986.)SH
/Helvetica-Bold SF
7200 57364 MT
(18.)SH
/Helvetica SF
9146 XM
(Nowicki, W.)SH
/Helvetica-Oblique SF
14924 XM
(Partitioning of Function in a Distributed Graphics System)SH
/Helvetica SF
(. Ph.D.)
278 W( Th., Stanford)SH
7200 58507 MT
(University, Stanford, CA, 1985.)SH
/Helvetica-Bold SF
7200 60379 MT
(19.)SH
/Helvetica-Oblique SF
9146 XM
(???)SH
/Helvetica SF
11648 XM
(ICL, ???)SH
/Helvetica-Bold SF
7200 62251 MT
(20.)SH
/Helvetica SF
9146 XM
(Pike, R.  "The Blit: A Multiplexed Graphics Terminal".)SH
/Helvetica-Oblique SF
33141 XM
(AT&T Bell Laboratories Technical Journal 63)SH
/Helvetica SF
(,)SH
7200 63394 MT
(8 \050Oct. 1984\051.)SH
/Helvetica-Bold SF
7200 65266 MT
(21.)SH
/Helvetica SF
9146 XM
(Postel, J.  Transmission Control Protocol.  RFC 793, USC/Information Sciences Institute, Sept.,)SH
7200 66409 MT
(1981.)SH
/Helvetica-Bold SF
7200 68281 MT
(22.)SH
/Helvetica SF
9146 XM
(Adobe Systems Inc..)SH
/Helvetica-Oblique SF
18873 XM
(PostScript Lanuage Reference Manual.)SH
/Helvetica SF
36882 XM
(Addison-Wesley, 1985.)SH
ES
%%Page: 29 29 
BS
0 SI
10 /Helvetica-Bold AF
30044 4329 MT
(29)SH
7200 7929 MT
(23.)SH
/Helvetica SF
9146 XM
(Rhodes, R., Haeberli, P, and Hickman, K.  Mex - A Window Manager for the IRIS.  Summer)SH
7200 9072 MT
(Conference Proceedings, Portland, USENIX Association, 1985.)SH
/Helvetica-Bold SF
7200 10944 MT
(24.)SH
/Helvetica SF
9146 XM
(Smith, D. C., et al.  The Star User Interface: An Overview.  Proceedings of the National Computer)SH
7200 12087 MT
(Conference, Houston, June, 1982.)SH
/Helvetica-Bold SF
7200 13959 MT
(25.)SH
/Helvetica SF
9146 XM
(Stallman, R., Moon, D., and Weinreb, D.  Lisp Machine Window System Manual.  MIT Artificial)SH
7200 15102 MT
(Intelligence Laboratory, Aug., 1983.)SH
/Helvetica-Bold SF
7200 16974 MT
(26.)SH
/Helvetica SF
9146 XM
(Steele, G. L..)SH
/Helvetica-Oblique SF
15539 XM
(Common Lisp: The Language.)SH
/Helvetica SF
29546 XM
(Digital Press, 1984.)SH
/Helvetica-Bold SF
7200 18846 MT
(27.)SH
/Helvetica-Oblique SF
9146 XM
(NeWS Preliminary Technical Overview.)SH
/Helvetica SF
27427 XM
(Sun Microsystems, Inc., 1986.)SH
/Helvetica-Bold SF
7200 20718 MT
(28.)SH
/Helvetica-Oblique SF
9146 XM
(Programmer's Reference Manual for SunWindows.)SH
/Helvetica SF
32542 XM
(Sun Microsystems, Inc., 1985.)SH
/Helvetica-Bold SF
7200 22590 MT
(29.)SH
/Helvetica SF
9146 XM
(Sweet, R.  "Mesa Programming Environment".)SH
/Helvetica-Oblique SF
30196 XM
(ACM SIGPLAN Notices 20)SH
/Helvetica SF
(, 7 \050July 1985\051.)SH
/Helvetica-Bold SF
7200 24462 MT
(30.)SH
/Helvetica SF
9146 XM
(Sweetman, D.  A Modular Window System for Unix.  In)SH
/Helvetica-Oblique SF
33654 XM
(Methodology of Window-Managers)SH
/Helvetica SF
(,)SH
7200 25605 MT
(F. R. A. Hopgood et al, Eds., Springer-Verlag, 1986.)SH
/Helvetica-Bold SF
7200 27477 MT
(31.)SH
/Helvetica-Oblique SF
9146 XM
(Programming the User Interface.)SH
/Helvetica SF
24485 XM
(Symbolics, Inc., 1986.)SH
/Helvetica-Bold SF
7200 29349 MT
(32.)SH
/Helvetica SF
9146 XM
(Teitelman, W.  The Cedar Programming Environment: A Midterm Report and Examination.  CSL)SH
7200 30492 MT
(83-11, Xerox PARC, June, 1984.)SH
/Helvetica-Bold SF
7200 32364 MT
(33.)SH
/Helvetica SF
9146 XM
(Trammel, R. D.  A Capability Based Hierarchic Architecture for Unix Window Management.  Summer)SH
7200 33507 MT
(Conference Proceedings, Portland, USENIX Association, 1985.)SH
/Helvetica-Bold SF
7200 35379 MT
(34.)SH
/Helvetica-Oblique SF
9146 XM
(VCB02 Video Subsystem Technical Manual.)SH
/Helvetica SF
29599 XM
(Educational Services, Digital Equipment Corporation,)SH
7200 36522 MT
(1986. Order)
278 W( Number AZ-GLGAB-MN.)SH
/Helvetica-Bold SF
7200 38394 MT
(35.)SH
/Helvetica SF
9146 XM
(Warnock, J., and Wyatt, D. K.  "A Device Independent Graphics Imaging Model for Use with Raster)SH
7200 39537 MT
(Devices".)SH
/Helvetica-Oblique SF
11945 XM
(Computer Graphics 16)SH
/Helvetica SF
(, 3 \0501982\051.)SH
/Helvetica-Bold SF
7200 41409 MT
(36.)SH
/Helvetica SF
9146 XM
(Wecker, S.  "DNA: The Digital Network Architecture".)SH
/Helvetica-Oblique SF
33140 XM
(IEEE Transactions on Communications)SH
7200 42552 MT
(CIM-28)SH
/Helvetica SF
(, 4 \050April 1980\051.)SH
/Helvetica-Bold SF
7200 44424 MT
(37.)SH
/Helvetica SF
9146 XM
(Wilkes, A. J., et. al.  "The Rainbow Workstation".)SH
/Helvetica-Oblique SF
31197 XM
(The Computer Journal 27)SH
/Helvetica SF
(, 2 \050May 1984\051.)SH
ES
%%Page: i 30 
BS
0 SI
10 /Helvetica-Bold AF
30461 4329 MT
(i)SH
12 SS 
25533 8075 MT
(Table of Contents)SH
11 SS 
9036 9319 MT
(1. Introduction)SH
53388 XM
(2)SH
9036 10563 MT
(2. Requirements)SH
53388 XM
(3)SH
9036 11807 MT
(3. System Model)SH
53388 XM
(6)SH
10 SS 
11092 12956 MT
(3.1. Network Considerations)SH
53444 XM
(8)SH
11092 14105 MT
(3.2. Resources)SH
53444 XM
(9)SH
11 SS 
9036 15349 MT
(4. Window Hierarchy)SH
52776 XM
(10)SH
9036 16593 MT
(5. Color)SH
52776 XM
(12)SH
9036 17837 MT
(6. Graphics and Text)SH
52776 XM
(13)SH
10 SS 
11092 18986 MT
(6.1. Images)SH
52888 XM
(14)SH
11092 20135 MT
(6.2. Graphics)SH
52888 XM
(15)SH
11092 21284 MT
(6.3. Text)SH
52888 XM
(15)SH
11 SS 
9036 22528 MT
(7. Exposures)SH
52776 XM
(16)SH
9036 23772 MT
(8. Input)SH
52776 XM
(18)SH
10 SS 
11092 24921 MT
(8.1. The Keyboard)SH
52888 XM
(19)SH
11092 26070 MT
(8.2. The Mouse)SH
52888 XM
(20)SH
11 SS 
9036 27314 MT
(9. Input and Window Management)SH
52776 XM
(21)SH
10 SS 
11092 28463 MT
(9.1. Mouse-Driven Management)SH
52888 XM
(21)SH
11092 29612 MT
(9.2. Icons)SH
52888 XM
(22)SH
11092 30761 MT
(9.3. Race Conditions)SH
52888 XM
(23)SH
11 SS 
9036 32005 MT
(10. Future)SH
52776 XM
(23)SH
10 SS 
11092 33154 MT
(10.1. Resource Allocation)SH
52888 XM
(23)SH
11092 34303 MT
(10.2. Transparent Windows)SH
52888 XM
(24)SH
11092 35452 MT
(10.3. Color)SH
52888 XM
(24)SH
11092 36601 MT
(10.4. Graphics)SH
52888 XM
(25)SH
11092 37750 MT
(10.5. Management)SH
52888 XM
(25)SH
11092 38899 MT
(10.6. Extensibility)SH
52888 XM
(26)SH
11 SS 
9036 40143 MT
(11. Summary)SH
52776 XM
(26)SH
ES
%%Page: ii 31 
BS
0 SI
10 /Helvetica-Bold AF
30322 4329 MT
(ii)SH
12 SS 
26465 8075 MT
(List of Figures)SH
11 SS 
9036 9319 MT
(Figure 2-1:)
SH( System)
612 W( Structure)SH
53388 XM
(7)SH
ES
%%Trailer
%%Pages: 31 
%%DocumentFonts: Helvetica Helvetica-Bold Helvetica-Oblique