Understanding linux desktop

I use debian wheezy xfce and want to set up my desktop. But I read some settings are redundant. Hence I want to understand how everything works, but I am massively lost. Can someone please sort, complete and entitle the following list and explain me what uses what?

KDE, Gnome, XFCE, X11, dgm, kdm, GTK(x), Sessions, lxdm, lightdm, compiz, Kwin, window- and desktopmanager… etc

Always when I think I understood it I find new expressions I never heard before.
Okay heres what I know. Gnome, KDE, XFCE are Desktops. They are on top of the stack. X11 is a library that displays something and makes use of the graphic driver, hence I think it is at the bottom of the stack. (But above the graphic driver)…

Asked By: ManuelSchneid3r

||
  • X11 – a windowing protocol (network transparent by the way) and its implementation (the X server and low level libraries for accessing it). Handles “only” basic input (keyboard, mouse,…) and output (drawing rectangles), but does it in a rather abstract fashion, so that you can run a program on one machine and control it from another one, subscribe to various events etc. There is actually only one usable open-source implementation, namely by the X.org Foundation.

  • Qt, GTK, Motif, … – originally widget libraries, which provide higher level abstraction above the X11 libraries (e.g. creating dialogs, buttons and other graphical elements). However, for example Qt goes way beyond that and has interfaces for a lot of other things as well (databases, multimedia, …). It also allows for unified design of UI. Similar to what Swing is in Java.

  • lxdm, lightdm, gdm, kdm, xdm, …- display managers: specialized programs that display login screen (some can do it over network as well) and let the user login into his/her preferred desktop environment session.

  • compiz, kwin, metacity, xfwm, openbox, … – window managers: programs supplying basic window environment functionality like drawing decorations to widows (title text and buttons), resizing, moving windows, moving these in the window stack (raising/lowering or tiling them on the screen). They sometimes also handle the “desktop” (background and icons placed on it) as well.

  • KDE, Gnome, XFCE, LXDE,… – desktop environments: more or less complete sets of tools. They usually include a window manager, display manager, some sort of “panel” (the thing, where icons, list of currently opened windows, clock, and other stuff is displayed), file manager, multimedia viewer, editor and “goodies” like calendar/reminder, and various desktop extensions)

You can (to some degree) mix applications from different DEs (display managers work fine since they are rather stand-alone however, especially kdm and gdm they pull in a lot of dependencies that their lighter-weight counterparts). The main trouble with mixing apps is that their settings are often intertwined with the DE, and thus may require some services to be running (which are not under the other DE). The look and feel might also be different when another toolkit (e.g. Qt vs. GTK) is used. And that’s the redundancy – multiple applications serving the same purpose have their separate and in some sense redundant options.

Answered By: peterph