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