create new tag
, view all tags
X (aka X Window (and not X Windows), X11, XFree, XFree86) is the most common piece of software in the Linux / Unix world used for displaying information on a computer's monitor and accepting input from a keyboard and mouse. It is ubiquitous and extremely versatile. Iit can handle the typical chore of handling displays for programs running on the same computer, but it can also easily handle displays for programs running on a different computer. It can even let one computer act as a graphic terminal for another computer.

Because of this versatility, and for some other reasons, discussion about X can be difficult and confusing. Here are some of the reasons for potential confusion:

  • Many of the words needed for discussion can be ambiguous. "Display" could mean what is displayed on a computer monitor (the most common usage in my experience), or could be another name (synonym) for the computer monitor itself (I've used this as well, but consider it less common). The "keepers" of X have adopted the less common definition (mostly, anyway, or so the X man page says).

  • The keepers of X adopted some other unusual terminology conventions. I understand the arguments for their correctness, but those conventions are:

    • counter-intuitive in today's environment (at least, but I can't remember when they were not counter-intuitive)

    • computer-centric vs person-centric (and what are we -- people or computers?)

    • somewhat exclusionary, whether by intent or accident

The one I am thinking of is that you sit at an X server, and it talks to remote applications that are X clients. (Is that what you expected?) Building on that, in a fairly common scenario, the computer you sit at may be called an X terminal (but it runs the X server) and the computer it is talking to is an applications server (using X clients). What were these guys thinking?

<reasonable start I think -- more editing from here on>

There are alternatives to X that have been discussed or are under development, like Berlin.

The terminology can be confusing because it uses common words with an intended "strict" definition which is slightly different than most people's common usage. One reason for this is that X is capable of many things that the uninitiated may not expect:

  • Of course, X can make the keyboard, monitor, and mouse work for programs on a single computer. (Even here there is a subtlety -- in programs that you may be used to in the dos / Windows world, each program directly handles output to the monitor or input from the keyboard / mouse. In the *nix world with X, programs don't do that -- they let X handle the keyboard, mouse, and monitor, and they talk to X. Is this really what I want to say here -- not sure it's really correct -- need to consider some more -- certainly a given *nix X based program creates the details of the screen -- where to put each charater, pixel, or graphic, and in Windows, there are other programs between a given application program and the hardware.

  • X is made with networking in mind. It is very easy (and fairly common) in X to:
    • Let a (single) program run on one computer but direct all its output (and get all its input) from another computer
    • Create the appearance of a computer running an entire suite of application progams, without running any application programs. All the application programs are run on another computer, but the interface to the operator (the keyboard, mouse, and monitor) is provided on a different computer. In fact, one (more powerful) computer running applications can make less powerful computers appear to be as powerful as the more powerful computer. (See X Terminal and applications server, to be mentioned again)

We haven't mentioned it yet, but because of the built in networking aspects of X, there is an underlying client / server "model". Unfortunately, some of the client / server terminology is exactly the reverse of what you might normally expect. Aside: My normal expectation is that I work at a client computer, and the client computer deals with a remote server.

Just to confuse you (to give you a taste of what you have to deal with here), in the application server / X terminal scenario, the X terminal is the client machine that you sit at (with your keyboard, mouse, monitor). The application server is the remote computer that your X terminal talks to. So far, so good. Now, get this: The piece of X that runs in your local computer / X terminal / client is the X server, and the piece of software that runs in the remote computer / application server / server is the X client!!


  • Computer "scientists" (or whatever these people are) can make an argument that this unusual terminology is correct but to me, this is just another case of something -- (like an attempt to keep out the unitiated -- (get the right word -- ???) To explain a little, they take a different point of view, they consider the X server to be serving many applications programs (X clients). (_I guess the other thing that makes their terminology wierd is that it is based on a computer centric view, where most of us are used to a more normal "human centric" view. Do we need people that deliberately obfuscate stuff? Well, we certainly have them, don't we (doctors, lawyers, judges, ¿most professionals?, and it seems to be (at least to them) necessary to let them earn a (good) living.
  • Some writer's of documentation carefully preserve this usage, some deliberately reverse it (in an effort to help their readers), and some confuse it, using it one way sometimes and the other way at others.

Aside from the client / server terminology issue, there are hardware / software issues that cloud the terminology. What would you call the picture you see on your computer monitor -- a window, a display, a screen, or what? Well, they faced the same question, and the same potential confusion. They needed names for the hardware aspects (what I've been calling the monitor so far (and might also be called a CRT, or LCD or LED display), and they needed names for the software aspects. Here is what they chose:

Otherwise unattributed quotes are from the X man page.

One of the first in a series of pages (perhaps prefixed by XWin, or Xw) on various aspects of X Window, which I prefer to simply call X, although that's a terrible thing to search for with a search engine.




Trying Definitions

"The phrase "display" is usually used to refer to a collection of monitors that share a common keyboard and pointer (mouse, tablet, etc.)." Trying a new definition, based on the comments below: '"Display" usually refers to a single instance of an X server (and its visible manifestation consisting of software [windows | screens \ something]) on a hardware device (consisting of a monitor, keyboard, and pointing device).' That's still not the least confusing definition I can imagine (and maybe not correct either, but may be a step in the right direction.

Points of Confusion:

  • There may be multiple displays (multiple X servers) on a single set of hardware — For example, on an X Terminal that "logs in" to multiple application servers, there is a display (and an instance of the X server) for each of them.

  • There may be multiple monitors / CRTs on a single display — That is the original definition on the man page, an example may be the IBM four quadrant displays.

  • There are other variations -- an X terminal (or personal computer) may log into only one application server (or none) but may import individual X windows from other computers. These run on the "normal" display (and instance of the X server) (AFAIK).

Comments and questions:

I think this terminology is confusing -- the following are some of the reasons. Can I (we) come up with better terminology? _The definition may be correct based on the use of the qualifier "usually".

  • I've never seen more than one monitor sharing one keyboard (well, unless I count some of those IBM thingies with four quadrants about the size of a monitor). So what are some examples of displays: A typical personal computer, an X terminal, ...

  • See the hostname:displaynumber.screennumber: "addressing scheme", below. On my Linux systems, a new "display" (with new displaynumber), creates a new doomaflatchie called up like a virtual terminal. (In other words, when I first start KDE with a local X server, I get to that X server's [window | display | whatever] by pressing <ctrl> <alt> <F7>. If I start another X server (I guess that's the right terminology) "attached to" another machine (or even another attached to the local machine) I access it using <ctrl> <alt> <F8> (and so on, if I add X servers). There is only one monitor involved (and one keyboard and mouse) -- so, is that a key to making the the definition more clear?

One of the many software based thingies (since I can't reuse display, I guess) that might be displayed on a monitor (which is also a screen) (??)



"The hostname specifies the name of the machine to which the display is physically connected." So, some examples of hostnames on my home LAN are system12, system11, office6 (with respective IP addresses of, ...11, ...6).

Oops, wait -- if I have a personal computer, running for example VM386 I might have several terminals (keyboard, mouse, monitor) connected to one single host (see hostname) --


(Is there a term for this address? Some examples from my LAN. system12:0.0 (???)

Hmm, does hostname:displaynumber.screennumber "comprise" a display name, as in "On POSIX systems, the default display name is stored in your DISPLAY environment variable. ...

           % setenv DISPLAY myws:0
           $ DISPLAY=myws:0; export DISPLAY "

(And maybe that's a "fully qualified" display name?)

< more to digest:>

The xon script can be used to start an X program on a remote machine; it automatically sets the DISPLAY variable correctly.

Finally, most X programs accept a command line option of -display dis- playname to temporarily override the contents of DISPLAY. This is most commonly used to pop windows on another person's screen or as part of a "remote shell" command to start an xterm pointing back to your display. For example,

% xeyes -display joesws:0 -geometry 1000x1000+0+0 % rsh big xterm -display myws:0 -ls </dev/null &

X servers listen for connections on a variety of different communica- tions channels (network byte streams, shared memory, etc.). Since there can be more than one way of contacting a given server, The host- name part of the display name is used to determine the type of channel (also called a transport layer) to be used. X servers generally sup- port the following types of connections:


  • () RandyKramer - 24 Mar 2003
  • <If you edit this page: add your name here; move this to the next line; and include your comment marker (initials), if you have created one, in parenthesis before your WikiName.>

Page Ratings

Edit | Attach | Watch | Print version | History: r5 < r4 < r3 < r2 < r1 | Backlinks | Raw View | Raw edit | More topic actions
Topic revision: r5 - 2004-03-06 - RandyKramer
  • Learn about TWiki  
  • Download TWiki
This site is powered by the TWiki collaboration platform Powered by PerlCopyright 1999-2017 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding WikiLearn? WebBottomBar">Send feedback
See TWiki's New Look