X Servers - Design

Design

For more details on this topic, see X Window System protocols and architecture and X Window System core protocol.

X uses a client–server model: an X server communicates with various client programs. The server accepts requests for graphical output (windows) and sends back user input (from keyboard, mouse, or touchscreen). The server may function as:

  • an application displaying to a window of another display system
  • a system program controlling the video output of a PC
  • a dedicated piece of hardware.

This client–server terminology—the user's terminal being the server and the applications being the clients—often confuses new X users, because the terms appear reversed. But X takes the perspective of the application, rather than that of the end-user: X provides display and I/O services to applications, so it is a server; applications use these services, thus they are clients.

The communication protocol between server and client operates network-transparently: the client and server may run on the same machine or on different ones, possibly with different architectures and operating systems. A client and server can even communicate securely over the Internet by tunneling the connection over an encrypted network session.

An X client itself may emulate an X server by providing display services to other clients. This is known as "X nesting". Open-source clients such as Xnest and Xephyr support such X nesting.

To use an X client application on a remote machine, the user does the following:

  • On the local machine, open a terminal window
  • use ssh with the X forwarding argument to connect to the remote machine. Telnet can be used but is not secure, does not allow graphical forwarding and is largely deprecated.
  • request local display/input service (e.g., export DISPLAY=:0 if not using SSH with X forwarding or 'tunneling' enabled).

The remote X client application will then make a connection to the user's local X server, providing display and input to the user.

Alternatively, the local machine may run a small program that connects to the remote machine and starts the client application.

Practical examples of remote clients include:

  • administering a remote machine graphically
  • using a client application to join with large numbers of other terminal users in collaborative workgroups.
  • running a computationally intensive simulation on a remote machine and displaying the results on a local desktop machine
  • running graphical software on several machines at once, controlled by a single display, keyboard and mouse.

Read more about this topic:  X Servers

Famous quotes containing the word design:

    I begin with a design for a hearse.
    For Christ’s sake not black—
    nor white either—and not polished!
    Let it be weathered—like a farm wagon—
    William Carlos Williams (1883–1963)

    You can make as good a design out of an American turkey as a Japanese out of his native stork.
    —For the State of Illinois, U.S. public relief program (1935-1943)

    A good scientist is a person with original ideas. A good engineer is a person who makes a design that works with as few original ideas as possible. There are no prima donnas in engineering.
    Freeman Dyson (b. 1923)