Using Graphical Applications Remotely With X11

<-- Return to the previous page

X11 is the software that provides a graphical user interface for Unix systems, including Solaris and Linux. It is actually a network protocol that was designed to allow Unix programs that utilize a GUI to send their graphical output to a remote display. It is included with nearly every implementation of Unix, including Apple's OS X. X11 implementations exist for Windows as well.
 
A Brief Introduction To X11

From the X11 Website:
The design of the X Protocol specifies a client-server relationship between an application and its display. In X, the software that manages a single screen, keyboard and mouse is known as an X server.
A client is an application that displays on the X server and is usually termed an X client or simply the application. The X client sends requests to the X server, for example a drawing or information request. The X server accepts requests from multiple clients and returns to the X client replies for information requests, user input and errors.
What does this mean? Essentially, it allows you to use a graphical application on a remote Unix machine, such as CAD or circuit simulation software (which is the X11 client), sending the output to your local computer (the X11 server), where it is displayed on your monitor and subject to control by your local keyboard and mouse.

What You Need

You will need SSH to establish a secure connection to the remote Unix machine. SSH is included on most Unix implementations, including Solaris, Linux and Mac OS X. Windows users need to download a Unix terminal emulation program that supports SSH. An excellent, free terminal emulator for Windows that supports SSH is puTTY, which can be downloaded at the following site. I recommend this program without reservation. Note that puTTY does not include an X11 implementation; you will need to download Windows X11 software separately.

These days, X11 applications can be used with just about every OS out there. If you are using a Unix-based system such as Solaris or Linux, X11 is usually included by default. If you are using Mac OS X, Jaguar or earlier, you will need to download the X11 package from Apple's website.

If you are using Windows, you will need to download compatible X11 software. There are several solid commercial implementations of X11 for Windows on the market. Unfortunately, these implementations are not free and require a nominal fee for use; however, most provide evaluation copies of their software for free. If you are a big Windows fan, I suggest that you invest in a license for one of the following programs, as you're certain to get much use from it during the course of your academic computing career. Some of the more popular ones include:

Free implementations of both SSH and X11 for Windows is included with Cygwin, which is a complete set of Unix and GNU utilities for Windows machines. Cygwin is available free for download at the following website. After installing a complete version of cygwin, you can start up an X11 session from the command line of an open cygwin terminal by issuing the command "startx".

How To Use Remote X Applications

X11 connections between remote systems can be established over an SSH connection to a remote machine. Assuming that you have a working implementation SSH and X11, it is easy to use a graphical Unix application from a remote location.
X11 utilizes a simple authentication mechanism that allows you to specify what systems are allowed to connect to your local system's X11 server. If you are using a Unix-based OS, you will need to issue the following command on your local system, using the name of the remote system that you will be running your X11 application from:

# xhost +sunserver.cisl.columbia.edu

Now, establish a connection to the remote machine using SSH. Make sure that you use the '-X' flag, which sets up X11 forwarding to your local machine.

# ssh -X armstrong@sunserver.cisl.columbia.edu (username@hostname)

Now, assuming that the X11 software is active on the local machine, you can start up a graphical Unix application such as xterm from the remote Unix machine, and have the output displayed on your local display, where it is subject to input from your keyboard and mouse:

# /usr/X11R6/bin/xterm &

If you need any assistance in getting X11 working on your system, please send a email to