[lug] X, Window Managers and KDE/gnome 101

Tkil tkil at scrye.com
Mon Dec 18 01:41:21 MST 2000


in very rough outline (people, please correct me!)...

the win32 "environment" generally has three major components.  in the
win32 world, they're called user, kernel, and gdi.  to draw a rough
parallel, the linux kernel itself maps to the win32 "kernel"
subsystem; the x server + xlib on client side maps to "gdi"; and the
window manager + glibc  maps to the "user".

the primary role of any unix-like kernel is to handle processes and
memory (creation, deletion, time-slicing, paging, etc), and to
arbitrate access to I/O.  the X server is the intermediary between a
portion of the i/o space accessed by the kernel (thus the need for
XWrapper and/or suid X servers) and processes X protocol requests.

this protocol request can be transmitted over unix pipes, tcp/ip,
decnet, and probably more obscure links.

everything that talks to an x server (which, generally, maps one
server per display) is called an x client.

window managers such as tvm, fvwm, e[nlightenment], sawmill, etc are
"special" clients.  they can act as servers to other clients on the
same display that are speaking the ICCCM protocol (?).  typically,
window managers also handle all the "decoration" around a given x
client: title bars, resize bars, icon managers, virtual desktops, etc.

everything else is a "normal client" that generates both X requests,
and ICCCM requests.  the ICCCM requests are handled by the window
manager, while the X requests are processed by the X server.

put another way: x server/display is to x clients as linux kernel is
to normal user processes.  window manager is to other x clients as
shells are to other unix processes.

personally, my biggest hurtle with all this is the fact that, at some
level, "server" and "client" are switched from the intuitive values.
if you have a big compute server, and you are displaying an xterm or
other output from it on your local workstation, you normally consider
your local workstation a "client" of the big compute "server".  but in
the wonderful, wacky world of X, the xterm process on the compute
server is actually the "client" process, which is displaying to your
local X "server".

clear as mud, right?

so does this answer your question at all?  we can draw some more
diagrams if that would make life easier.  alternately, borrow
someone's copy of the o'reilly X programming books.  they have a
pretty good coverage of this area -- not surprising, since this is
where o'reilly got their start!

anyway.  post comments, clarifications, "tony, stop posting when
you're dronk" messages.

t.




More information about the LUG mailing list