Week 7

Running Graphics Applications Over a Network

X Windowing System
X Windows is an application developed to run graphics applications over a network. Originally, X Windows was for basic computer terminals that relied on communication with a server to function (not today's computers!).

It is important to note that X Windows treats the "client" and "server" as opposites -- your screen is the display server, and the program feeding the display is the client. Because of this setup, you could face a problem with your at-home router blocking this network connection with its firewall. The easiest way to work around this issue is to establish a connection to our network with the VPN.

To use X Windows on clipper, start a new terminal session and type:
    ssh -X username@clipper.cs.ship.edu
Once you are logged in it may look like nothing has happened but typing:
    echo $DISPLAY
will reveal that your ssh environment has set the graphical display address to a server number. Now you're ready to run graphical applications!

Starting various programs like xterm or firefox will now bring up a graphical window. This window runs on the server and is fed graphically to your machine (that is, the programs don't run on your machine). This allows you to run any of the Computer Science Department's software (like Eclipse) from anywhere! For example, if you have X Windows installed, you don't technically need our Virtual Machines -- you can just run our software on clipper and view it over a network.

X Windows comes standard on Linux and Mac machines. An X Windows port for Windows is available at http://www.straightrunning.com/XmingNotes/

If you need to remote desktop to a machine over a network, you can use Xnest, which runs through X Windows. Note that when you connect to a computer with Xnest it starts a session that is independent of anyone using it. That is, you will never know if someone else is using the machine, and no one will know that you are using that machine (very nice for privacy!).

To start Xnest, use:
    Xnest -query targetmachine :display#

Example: The command:
    Xnest -query msct164s01 :5
will connect to computer 01 in MCT 164 using a display called 5 on your machine (the display number can be whatever you want so long as that number is not already in use by another connection). See below for computer naming conventions.

WIth Xnest, instead of just being able to run software over a connection, you can access the entire lab environment from anywhere!

Note that if you install Xnest, the package name is "xnest" while the actual command to run the program is "Xnest"

Naming Computers
all computers in the Computer Science Department are named according to:
mct<room number>s<2 digit computer number>

mct164s01  --> computer 1 in 164
mct162s20  --> computer 20 in 162
mct162s03  --> computer 3 in 162


X Windows can be slow because of the way it transmits information over the network (as constant packages of information). A faster alternative is VNC, which only sends changes in your environment over the network.

To use VNC you must first set up a display server:
    Syntax: vncserver :display# -geometry widthxheightofwindow
example: vncserver :6 -geometry 800x600

This creates graphical session. To actually connect, you must open a session to a computer:
    Syntax: vncviewer computer:display#
example: vncviewer mct162s23:6

The first time you set up VNC, you must enter a password. This doesn't have to be your clipper password, but make sure it's memorable, because you'll need it every time you use VNC!

When VNC starts, it takes you to a (relatively) blank screen. All you initially get is a bare window on bare canvas. This is because that's all a windowing system is -- a way to draw boxes and text on the screen. To make this look more familiar, you'll need to start up a window manager. With Linux you can choose between several window mangers. To get the standard window manager (gnome), type:
    gnome -session
To get a lighter, faster variant of gnome, type:

When these load, you should see a familiar desktop view of the computer you are accessing

VNC comes standard for Linux.
For Macs, download Chicken of the VNC
For Windows machines, download TightVNC

NOTE: You cannot remotely access the computers in MCT 165 yet. This is because when you connect to them, you control the entire computer. This means that people in the lab would be able to see what you are doing, and, if anyone was on the computer, you could see what they were doing! We are working to fix this problem. For now, you can only log into MCT 164 and 162.


Just how does a terminal window work? When you send out commands to the terminal, it sends an escape sequence that signals the sytem to perform and action (VT100 escape codes). You can find a list of these character sequences at http://ascii-table.com/ansi-escape-sequences-vt-100.php

These codes where originally designed to be used with characters. Eventually, computer scientists figured out how to send them as binary data to a server. Sound familiar? That's how the X Windowing System was developed!