If you run Linux on your desktop or laptop machine, it's highly likely you know about the X Window System. In the normal course of things, there's no reason why the details of the graphical windowing system should be made explicit to the user, but even in the best of circumstances X requires a degree of irritating configuration.
The X Window System is around 20 years old, and has gone through a variety of transformations. Weird hardware from ancient Sun workstations to the first 386-based PCs has forced evolution-- and some nasty hacks--on the server. What we use today on most Linux distributions, XFree86, is the result of this development path.
To cut a long story short, the state of the X Window System isn't really a happy one. Leaving the deep technical issues aside, the impact on users of the Linux desktop includes:
A few years ago, we could have added "poor font handling" to that list. Happily, that situation has changed, and was among the first of a variety of changes. Some of these have landed already, and we're due to see an increase in the number of improvements hitting the Linux desktop over the coming months.
Due to various circumstances, the main branch of X development is now happening in the X.Org project, rather than XFree86, and it is this implementation of X that is likely to be included in most future Linux distributions. X.Org is the center of a lot of exciting work on new X features.
I attended the talks given by X Window System wizards Keith Packard and Jim Gettys at the recent Linux Symposium and a got a taste of what's coming soon.
The new composite extension to X will have the biggest user-visible impact. Until now, every X application has drawn straight to the screen. This means that if fancy effects such as translucency are required, then each application has to implement this itself. The latest KDE desktop does something like this. At best, results are mixed.
What composite does is make every application draw into an off-screen buffer, and then use a compositing manager to decide how the windows will be arranged on the screen. Among other things, this enables drop shadows and translucency on windows.
The neat thing about the composite extension is that there will be choices for implementing the compositing manager. Such managers could give a radically different view on to the desktop, such as the 3D environments provided by Sun's Looking Glass project.
The forthcoming release of X.Org (which has taken over from XFree86 as the favored X implementation by most Linux vendors) will include support for composite as an experimental feature. The idea is to get it out to users and developers for testing and improvement.
There is currently only one compositing manager available, xcompmgr. It allows some basic effects, such as smooth fading in and out of windows, drop shadows, and window translucency.
Figure 1. Shadowed windows
Figure 2. Closeup of drop shadow on menu windows
Figure 3. Windows of varying translucency
In order to do its compositing, the compositing manager needs to know which areas of the off-screen windows have changed. This is the job of another new feature, the damage extension. It allows any application to listen for changes in windows.
As a taster of the sort of effects that the damage extension will make available, the uncover utility shows the user an overview of all windows in the system in relation to each other, but scaled so that none of them overlap.
Figure 4. Uncover (top left) shows a non-overlapping window overview
Another utility, skippy, implements something similar to the Exposé window-choosing facility from Mac OS X. Via the damage extension it keeps the contents of all the windows up to date even while minimized.
Figure 5. When the user hits F11, skippy presents a live overview of windows
As well as the glitzy new features, there's a lot of work underway in other parts of the X Window System. One initiative that will have a positive knock-on effect is the splitting up of the monolithic source code tree of X into parts that can be built independently. Currently, despite the fact that large amounts of the source code is static, everything must be rebuilt and released in a synchronized way. This modularization, happening in the Debrix project, will pave the way for more flexible development and release of X.Org.
Another important project is the "kdrive" X server. Kdrive is intended to be a small footprint; a simpler X server for use in proofs of concept or embedded systems. It provides another way for developers to quickly try out new ideas. It's quite easy to check out Kdrive from the freedesktop.org repository and give it a try yourself. See the links in the Resources section at the end of this article for instructions.
From being a foreboding and scary kind of project, the X Window System is turning into a more accessible project that appeals to developers wanting to help out and experiment. This can only have a positive long-term impact on the Linux desktop.
The time of liberation is near. The current estimate of X.Org developers is that these new features will get into Linux distributions in six months or so. No longer will Linux desktop users cringe when they can't do the same fun floaty effects their Mac-owning colleagues can!
More seriously, the improvement in X technology should further unlock creativity and usability on the Linux desktop. Watch this space.
Thanks to Daniel Stone for answering various questions about how the new X server works.
Edd Dumbill is co-chair of the O'Reilly Open Source Convention. He is also chair of the XTech web technology conference. Edd conceived and developed Expectnation, a hosted service for organizing and producing conferences. Edd has also been Managing Editor for XML.com, a Debian developer, and GNOME contributor. He writes a blog called Behind the Times.
Return to the O'Reilly Network
Copyright © 2009 O'Reilly Media, Inc.