views:

56

answers:

1

I would like to know more about what makes the GUI on *NIX systems work, but not quite sure where to begin the research. From my understanding, the X server is what makes all the visuals possible, and atop that there are the various UI environments like KDE, Gnome and others.

But, for instance, I have always thought that running under certain UI environments restricted you to programs that utilize that environment, until I realized I'm able to use KDE utilities and software under Gnome and vice versa, which retain the look of their native environment.

What would be a good place to start learning about this topic?

+5  A: 

Essentially, the GUI bits are individual libraries that include the chrome (stuff around your program's window), and usually include a bunch of other stuff like desktop toolbars and so on. GNOME and KDE are desktop environment examples of this.

They each include a window manager, which is the bit that tells your programs precisely where to draw, and how to draw the chrome.

Below them, you've got the X framework, which provides the API that the window managers use to paint on your screen. So X depends on your graphics drivers, which tell it how to interact with your hardware.

Above your window managers, you've got your actual programs. Each of those makes calls to the window manager to do generic things like "give me a 50x50 window with a close button".

The actual widgets drawn by a program generally utilize a graphics toolkit like the one included with GNOME. KDE includes the Qt toolkit.

There's a good selection of wm's here http://xwinman.org/

Paul McMillan
A little bit of inaccuracy at the X level, but otherwise correct.
Ignacio Vazquez-Abrams
Please fix it then. You've got the rep to do it :)
Paul McMillan