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:
“Joe ... you remember I said you wouldnt be cheated?... Nobody is really. Eventually all things work out. Theres a design in everything.”
—Sidney Buchman (19021975)
“Humility is often only the putting on of a submissiveness by which men hope to bring other people to submit to them; it is a more calculated sort of pride, which debases itself with a design of being exalted; and though this vice transform itself into a thousand several shapes, yet the disguise is never more effectual nor more capable of deceiving the world than when concealed under a form of humility.”
—François, Duc De La Rochefoucauld (16131680)
“Delay always breeds danger; and to protract a great design is often to ruin it.”
—Miguel De Cervantes (15471616)