The GraphMe page, the one about Graphics User Interfaces.

Paragraphs in this page are:

A Little Theory
Variety
Toolkits



A Little Theory

As we have learned till now, Linux does not have a linux-specific method for a GUI, but instead uses the ones that are developed for all unices.

We have to be used to a terminology somehow alien to users accustomed to other Operating Systems.
The GUI is not something accomplished by one program.

Because of portability and the variety of systems, protocols have to be specified and code "close" to the systems is not specified in the environment's source code, but instead in libraries that lie below.

First, there is a "Graphics" mechanism, that controls the graphics card
and input peripherals, like mouse, keyboard etc.

Some of these mechanisms are:
  SvgaLib      Independent console applications rely on this
  X Server     Most graphical environments rely on this one.
   
So, X is the Graphics Mechanism.
   
Second, there is a Window Manager that will handle the window behaviour
of a program.
That is, to allow to maximize, minimize, restore, shade etc.

Some of the Window Managers are:
  Twm           basic window manager from the X package
  Blackbox      modern, very light and impressive Window Manager
  Enlightenment another very powerful Window Manager.

Third in place is the Desktop.

The Desktop does all the other tasks, like Object Linking & Embeding,
Drag & Drop, Icons as desktop objects, some or many internal applications, etc.

Desktops come often with their own window managers, but still can cooperate with others.
This modularity can bring us to some interesting situations:

Even if an X-client (a program that will run in X) hangs, we are able to minimize it, move it, send it to another desktop etc.

If our Window Manager hangs, we will see all our programs turning unmovable but working, while we can still operate the desktop icons.

And if we kill the Window Manager, then our programs will be restored without borders and still unmovable, but still working.
We can then re-run the Window Manager!

(Some programs have also the ability to move without a window manager)
   
If our Desktop hangs, we will still be in a graphics environment, operating applications with full mouse and keyboard functionality and window behaviour.

Through some harder work, we may even be able to kill and recall the Desktop leaving applications in place, but this generally depends on how we have initially called this Desktop and the applications.

And some more interesting situations:
  We can send an x client (program) to another computer's X Server.
  We can run a remote x-client and/or Window Manager or Desktop on our local X Server.
  And this can be accomplished between different hardware and *nixes!
  We can have a fine linux box without the X package, running its X applications from the network.


Because X was initially a project designed to work between different platforms, emphasis was given to network transparency and protocols, but only as a mechanism. So, different interfaces could operate through it, provided that they were compatible to the protocol version. Any X11 client from any *nix box can work in an X11 Server, even an X11 Server running in MS Windows!


The X is now in state 11 Release 6 so it is: X11r6

X for intel machines is called: XFree86 and is compatible to X11r6

Update: Due to an XFree86 license change characterized as incompatible to the GNU/GPL license by the computer community, the XFree forked and now the active group is called x.org.

You can have a fine linux server without the X package, running its applications from the network.


Examples for this paragraph will soon be in  the TrickMe page.

Remember, you can find programs that rely on X only
(the description will be X11) as well as programs that depend on specific
desktop libraries or mechanism. (see Toolkits).



Variety


Some fine Window Managers:


Twm somehow old nowdays, included in the X package.
Blackbox very fine, modern, small etc.
Fluxbox Based on Blackbox 0.61 sources and entirely compatible.
Enlightenment Powerful, theamable, comes with a sound server.
IceWM Fine WM, cooperates with KDE & Gnome Desktops
Window Maker Very practical, cooperates with KDE & Gnome Desktops
FVWM
Very light WM
FVWM95
Like FLWM but with Redmond look.
Sawfish
Former Gnome's external WM that can run separately.
Metacity
Current Gnome's external WM that can run separately.
Ion
The most minimalistic WM, with an innovative design.


 Some Window managers, although not Desktops, have some Desktop capabilities.

 Some fine Desktops:
   
 K Desktop Environment Very practical, fully intergraded environment.
 Comes with a sound server, applications, utilities, office suite,
 development tools, Konqueror (File manager and Web - Media browser),
 KMail (Mail client) KNode (News Reader) KGet (d/l Manager),
 Address manager, Organizer Network Client deamon, OLE Daemon (Klipper),
 MultiMedia applications, and will be loved from both
 MS Windows and MacOs accustomed users.

 KDE is based in Trolltech's QT intergraded application environment
 (language and toolkit). Allthough QT is not Free, it comes with a
 special GPL licence when developing  applications for Free Unin-compatible
 OSes and X.

 Gnome (Gnu Network Object Model environment), from the team that
 gave us Gimp (Gnu Image Manipulation Program) and Midnight
 Commander, fully functional Desktop, with File manager and Web
 browser (Nautilus), utilities, impressive toolbar manipulation,
 display priorities etc.
 Metacity is now the Window Manager for Gnome.

 The Gnome team decided to create GTK, an intergraded developing environment
 (language & toolkit), based on the previous team work, Gimp
 (GNU Image Manipulation Program).

 XFCE An alternative Desktop, very small yet powerful, comes with native
 applications like File Manager etc.

These Desktops think modular, too. To run a Kde application in Gnome you don't even have to install all of Kde, and vice versa (I have always both of them full).
You may like the one's desktop and the other's programs and this will just work fine.



Toolkits

Most Graphical applications rely on toolkits. Think of toolkits as external libraries that provide functionality, object- oriented methods, widgets (i.e. icons, menus, scrollbars) etc.

When you see X11 in an application's description, think of it as X depended.

Standard X applications rely on the Athena toolkit.

If you see Qt,  think of it as a Kde   application.
If you see Gtk, think of it as a Gnome application.

Q. Why do we need toolkits?

A. Because without them, every program design would have to be made from scratch!
   So, once a toolkit is made, it can be friendly ground for other apps.

   Furthermore, applications based on a single toolkit have the same look & feel.

Other toolkits are:

Motif   Netscape, NEdit, Common Desktop Environment etc. depend on it.
Lesstif A Free toolkit aimed mainly for compatibility with Motif.

There is also a language combination that helps to create scripts with a graphical appearence: the Tcl/Tk. But, of course, this is not a toolkit.