[vox-tech] Pardon me, but...
vox-tech@lists.lugod.org
vox-tech@lists.lugod.org
Mon, 17 Jun 2002 18:43:58 -0400
On Mon, Jun 17, 2002 at 02:57:10PM -0700, Richard S. Crawford wrote:
> How does the whole windowing thing work?
This is a quick overview... I probably trimmed the truth and forgot
some components.
Linux (the kernel) manages all hardware resources,
but makes an exception for the video card which can taken over
by a root owned process (1).
The "X server" can be thought of as a device driver for the video card,
and is at the lowest level in a X Window system. It accepts
connections and communicates with other processes via a X communication
protocol. This is something like XF86_foo in the 3.* series and
XFree86 in the 4.* series.
The X window manager (twm, fvwm, sawfish, enlightenment, etc),
manage the look and feel of application windows in a X session.
They control how window movement, resizing, iconification, making
windows sticky, mouse activity on the root desktop, virtual desktops,
etc.
X applications connect to and communicate with the X server, they ask
the server to create windows and display graphics and such (2). Often
the server will pass on information about the request to the X window
manager who can decides how things operate (like window placement).
A X display manager (xdm, gdm, kdm), are the programs that allow
users to log into a X window server, and starts up their X environment,
based on system defaults or their preferences.
A X session manager can be run, the purpose of this program is to keep
track of which applications are running, their size, placement, and
other attributes so that when the session is shutdown their state
can be saved and restored on next login. This is a very optional
component.
A X font server can be run, which will load fonts in a format that
is not normally readable by the X server and render them into
a image that the X server can place on the screen, optionally
resize or modify them to the form a X application requested. They
tend to communicate directly with the X server and pre-exist
before the X server itself starts up.
A "panel" is what display the Gnome footprint/KDE logo on the bottom of
the screen, which supplies a application menu list, allows icons to
be loaded into it, and often has other X "applets" running embedded into
itself to manage the desktop or keep track of things like weather or
"you have mail" status.
A "pager" is the little program that miniaturizes the virtual desktops
often by a factor between 1 to 32 or 128 so that you can see all of
the desktops and mini-copies of the window placement, often this
allows you to move windows between desktops and switch to other
desktops.
A "task list" is what the panel often uses to display a list of programs
running on a the current desktop or all desktops, this program often allows
one to (de)iconify or kill running X applications.
I don't know the name of the thing that manages icons on the desktop.
A "desktop environment" (KDE, Gnome) often consists of a session manager,
a panel application, a pager, a task list, a icons on desktop application,
a sound layer mixing server... all bundled into one.
Some desktop environments provide a sounds server, called "artS" on KDE
and esd is used in others.
> On my computer, I've got
> Linux which runs
> X which powers
> GNOME which integrates with
Gnome is like .NET, it can mean different things to different people...
to some it's Desktop Environment, to others it's a variable collection
of mostly interoperable components. ;)
> Nautilus
Nautilus is a fancy emacs-like "browser" (do everything in one place)...
kinda like a merging of a web browser, file browser, email client, etc.
I don't know how much of it is complete but the all in one browser
seemed to be the direction they were headed...
> How do all these pieces fit together?
Slowly. VERY Slowly if you run one of the more complex desktop
environments. Try starting up just an xterm in twm and will miss
the whole think on modern hardware. Try starting up KDE or Gnome Desktop
on something that is 5 years old and you might as well get lunch while
you wait. :{
1: The linux "frame buffer" is a move in the direction of complete control
of all devices by the kernel, this is a good thing from stability
perspective because a bogus X server can't lock the graphics or corrupt
the text consoles. It's bad from performance and speed of development,
because the kernel would have to support any hardware acceleration features
for them to be available (this is just not going to happen for all
hardware) and the kernel has to be update as new graphic hardware becomes
available to support the new devices.
2: A new method called "DRI" (which I think is
"Direct Rendering Infrastructure"), has been introduced so that applications
can get direct control over the X server, cutting out the window manager
and other X applications from control over the device while in this mode.
It is used for many fullscreen applications.