[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.