X Window System - 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 Window System

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)

    If I commit suicide, it will not be to destroy myself but to put myself back together again. Suicide will be for me only one means of violently reconquering myself, of brutally invading my being, of anticipating the unpredictable approaches of God. By suicide, I reintroduce my design in nature, I shall for the first time give things the shape of my will.
    Antonin Artaud (1896–1948)

    To nourish children and raise them against odds is in any time, any place, more valuable than to fix bolts in cars or design nuclear weapons.
    Marilyn French (20th century)