Linux - GeneralThis Linux forum is for general Linux questions and discussion.
If it is Linux Related and doesn't seem to fit in any other forum then this is the place.
Welcome to LinuxQuestions.org, a friendly and active Linux Community.
You are currently viewing LQ as a guest. By joining our community you will have the ability to post topics, receive our newsletter, use the advanced search, subscribe to threads and access many other special features. Registration is quick, simple and absolutely free. Join our community today!
Note that registered members see fewer ads, and ContentLink is completely disabled once you log in.
There are many. It is the program that is drawing frames around windows (which are technically only drawable rectangular areas, from X point's of view). The windows manager also allows you to drag those frames around the screen, most of the time, as well as iconify, maximize...
In very short:
- The window manager is responsible for windows themselves (move, iconify, resize...).
- The desktop environment is there for giving homogeneity. It defines a prefered toolkit, unifies the look and feel, defines standards, for example drag'n'drop, startup notification, accessing remote data... The DE also provides standard tools: file manager, calculator, logout window, configuration tool...
A desktop environment is nothing without a window manager. KDE uses KWM by default, which can be changed. Gnome uses Metacity by default, which can also be changed.
Many window managers provide a subset of what the desktop environment would normally provide, thus avoiding the need for the desktop environment. The most provided feature is a toolbar with a taskbar and a menu.
Note that an effort is made to unify many important protocols accross many window managers and desktop environments. Head to http://www.freedesktop.org if you're interested.
XFree86 is a free implementation of the X11 protocol, Revision 6. (That's why current Xorg -a replacement for XFree86- is numbered Xorg-6.8.1).
The X11 protocol defines a server and a client.
The server is a program that (normally) runs on a display, and provides services (that's what servers do). This server's services are: draw a line, a rectangle, a circle, a character...
Talking to the server is done using the Xlib client library. When Xlib is used, it asks the server to perform a task on behalf of the Xlib user, such as drawing a rectangle for example. Because it is a client/server protocol, Xlib is given the address where the server can be found on the network. And because multiple servers can run on a single host, a number is appended (after ':') to say which X server is talked to. Example: "10.0.0.11:0.0".
A X client is a program that is based on the Xlib library.
That way, X clients don't have to care about if the display is VGA, or SVGA, or XVGA, or... Neither have they to care about wether it is black and white, or 16 colors, or TrueColor...
A X client ask for geometric shapes, or bitmaps, or text to be rendered, then the X server receives the requests, and do what it can with those. The X servers really tries its best, up to the point of changing things if needed: try and find the best match for a font that is not available, or use the closest matching color...
All X clients know the DISPLAY environment variable, which says what X server they should talk to.
Thus, (almost) all Linux GUI applications are X clients. And when you configure your monitor, resolution, bit-depth, graphics card chipset, it is the X server you configure.
Side-note: Xlib is very basic (rectangles, circles, colors...). That's why GUI toolkits were created: gtk, qt, motif... Each one tries to make the use of Xlib more easy by aggregating things in a logical and usefull way; example: ask to "display a button", instead of "draw a grey rectangle, then another slightly smaller white rectangle inside (you have to compute coordinates), and try and fit this <<text>> inside, and please do 'this' when the mouse is clicked inside the white rectangle". "display a button" is better, no?
To conclude, I'll add that GUI is possible without X. There's the framebuffer. And there's DOS-like text GUIs, like ncurses.