CSC128 : Introduction to Linux

Linux GUI Overview


A Short History of Linux User Interfaces

Modern application programs are rarely command-line programs like we've used so far.  They usually take advantage of a Graphical User Interface (as opposed to a Command-Line Interface).  

Early Computers
Originally, operating a computer meant actually moving wires and flipping switches, and then decoding the output of meters and lights.  Later, this became more automated with the introduction of punch cards and punch tape.

Teletypes (tty)
Eventually, as computers started to become more general-purpose, teletypes (tty) were used to communicate with them.  These were essentially typewriters connected to the computer so that the user could type on paper and signals representing the characters being typed would be sent to the computer, which would respond by taking control of the typewriter and typing out a response on the same paper.  This is the era in which Linux was born.

Command Line Interface
At this time, the Command Line Interface became the standard way of controlling a computer-- a big step up from flipping switches and punching cards.  The Command Line Interface mimics a conversation:  the user types text commands, and the computer responds with text.  Linux is full of commands to deal with text, as this was the main data computers worked with.

Terminals
Then came terminals.  These are just monitor/keyboard combinations that mimic ttys and add new features.  Terminals would be connected to the computer in the same way the ttys had been before.  Now programs like
vi were written to take advantage of the CRT monitor.

Personal Computers
Now computers have become small enough that terminals are rarely used;  computers small enough to fit on a desk are directly attached to their own keyboards and monitors. Computers have become fast enough that a new user interface was created: the Graphical User Interface (GUI).

Graphical User Interface (GUI)
Rather than using a "conversation" metaphor,  GUIs use a "desktop" metaphor.  Application Programs are arranged on the screen like papers might be on a desktop.  A pointer controlled by a mouse allows the user to interact with their "desktop", pointing to items, moving them around, manipulating them, and giving them commands. This has become the dominant form of user interface, especially for the casual user.

X-windows

In 1984 the Massachusetts Institute of Technology (MIT) formed Project Athena. The goal was to take the existing assortment of incompatible workstations from different vendors and develop a network of graphical workstations that could be used as teaching aids. The solution was a network that could run local applications while being able to call on remote resources. They thus created the first operating environment that was truly hardware and vendor independent - the X window System.

By 1986 outside organisations were asking for X. In 1988, MIT officially released version 11 release 2. The X Consortium now handles all the development of X and the most recent version is release 6, which was released in September 1995.1

X-windows makes a natural base for GUIs, handling all the underlying hardware problems, and presenting a very Linux-like interface to the application programmer.  The application programmer does not need to concern herself with the specifics of the hardware for specific machines, but can write the GUI to work on any Linux system with an X-windows client written for it and its graphics system.  

The X-windows server is now maintained by X dot org


Widgets
X is a fairly low-level interface.  It provides a single way of using different graphics hardware, but it doesn't give the application programmer many helpful tools, like all the pretty icons and buttons and sliders and whatnots that you've come to expect in a graphical environment.  These are known as widgets .

Many vendors and other groups have written entire program libraries to provide whole widget sets that give the application programmer a higher-level way of programming in a graphical environment.  Rather than telling X each and every pixel that needs to be drawn and where, the programmer simply calls a widget, like a button or a scrollbar, and the library program code handles the rest.

The X Consortium wrote its own widget set, Athena, which isn't very popular.  Historically, the Motif widget set has been very popular, although it seems to be moving out of favor today.  The battle is currently raging between GTK+ (GNU's Gnome Toolkit) and QT (by Trolltech), among others.
Window Managers
A window manager is an application that uses widget sets and X to give the user the ability to manipulate the X application windows around the "dekstop", or even to provide many virtual desktops that the user can quickly change between.  

The bar at the top of application windows, with all the little buttons to minimize, maximize, exit, etc. are all drawn by the window manager .  The window manager is responsible for controlling window behavior. Generally, the user still interacts with the computer though commands to a shell in a terminal window.

Desktop Managers
Another layer on top of the window manager that is becoming popular is the desktop manager.  This application isn't concerned with the way windows are drawn or behave;  instead, it provides graphical means of manipulating the computer; it aims to replace the shell, by giving the user similar functionality.  Instead of typing commands to a shell in a terminal window to view and move files, the user drags icons representing those files around the screen to visual representaions of different places in the filesystem.  For example, dragging an icon representing a file into a little picture of a trashcan might perform the same function as the command rm .

Some window managers are so complex that they border on becoming desktop managers.  Many times, the distinction is vague.
A Short Rundown of Linux GUIs
Vendor
Widget Library
Window Manager
Desktop Manger
X Consortium    
Athena 
twm

AT&T/SUN  
OpenLook 
olwm

OSF/OpenGroup  
Motif 
mwm

IBM/SUN/HP 
CDE (based on Motif) 
dtwm (based on mwm)  
cde
SGI
Motif
4dwm


custom  
fvwm (based on twm)

GNU project/FSF
gtk+ 
enlightenment / sawfish  
gnome 
KDE 
Qt   
kdm 
kde
There are many other window managers.  A short list includes: 9wm, aewm, AfterStep, aniwm, blackbox, ctwm, evilwm, flwm, icewm, mlvwm, qvwm, sapphire, scwm, swm, vtwm, windowmaker, wm2, wmx, xfce...







1 The preceeding two paragraphs were taken verbatim from http://nestroy.wi-inf.uni-essen.de/Lv/gui/cg252/course/lect4c1.html