Several Lightweight Linux X11 Window Managers
I've installed Suse 11 on about a dozen computers so far, and always used Enlightenment and e16 as the window manager. But on one computer, for some inexplicable reason*, Enlightenment could not be installed. So it was necessary to check out some alternatives. It turns out there are several excellent, lightweight window managers out there. Since they're all written by volunteers, installing them isn't always painless. They all have little problems. But most of them blow the Windows desktop out of the water in terms of configurability and appearance.
Some other window managers are reviewed here.
*Update: I later found out the reason is that Opensuse removed the Enlightenment RPM from their website. Luckily, I found a copy on a website in Taiwan. (Search for enlightenment-0.16.8.12-16.1.x86_64.rpm.)
The venerable fvwm95 compiled and worked fine, except for the fact that it was impossible to move windows around on the screen using the alt-left-click option. Fvwm95 is lightweight and fast, but it was written in the days of Windows 95, and by default it has the same sickly blue-green background. That was easy to fix by editing fvwm95's source code. But for some unknown reason, when fvwm95 was used, there were no screen decorations on the latest version of Acroread, Adobe's PDF reader. Removing the .fvwm95rc file didn't help. This was a big problem: fvwm95 positioned Acroread about 20-30 pixels higher on the screen each time it was run. After a while, the menu bar was well off the top of the screen. Since you can no longer grab the window, there is no way to fix it—or even to get out of Acroread.
I might add that Evince has a similar problem: the window gets bigger each time it's opened, like something out of a science fiction movie. There are several versions of fvwm: fvwm, fvwm2, and fvwm95.
I was impressed by Fluxbox. It compiled and installed satisfactorily, and comes with a number of "style" programs that customize the appearance. It's highly configurable. It's easy to create new styles, and the options are documented very well in the man pages. It was by far the nicest-looking window manager I tested. By default it puts some other junk on the screen, but it's easy to turn that off.
Unfortunately, Fluxbox's focus model is seriously broken. If you open a dialog box, then a sub-box, then close the sub-box, focus always goes back to the main application window instead of the dialog box. Sometimes that's just an inconvenience, but sometimes it makes the program useless. For example, when I run an image analysis program, the following sequence of events occurs:
- Select a region with the mouse.
- Crawling box appears.
- Click on the function (crop, measure, whatever).
- Focus goes back to the main program. The program thinks you're finished and you want to select another region. As soon as you click on the screen, the crawling box disappears.
- The function either fails or executes on the wrong part of the image.
Here's another situation:
- Set the Nedit text editor to open each file in a separate window, and open a file for editing.
- Open a second file.
- Depending on whether you used the mouse or the keyboard to open that second file, the focus will either go to the new file or jump automatically back to the first window. There's no way to predict which file your keystrokes will go to. None of Fluxbox's configuration options deal with this correctly.
Another example: if you try a text search in a text editor, using a pop-up dialog box to set the search parameters, the focus eventually and unexpectedly returns to the main window. If you were hitting Enter on the dialog box instead of clicking with the mouse to find the next occurrence, you would suddenly find that you're unexpectedly back on the main window and you've accidentally deleted the text instead. No other WM does this.
This means that only the simplest of applications can be run in Fluxbox. All other apps have to be re-written to check which window manager is running and change their behavior accordingly. That gets ugly fast. Also, wmcalclock and other non-decorated windows are docked in the lower right instead of upper left of the screen, and there's no way to change that. That's an annoyance more than anything.
I complain, but if they could fix the focus problem Fluxbox would be my window manager of choice.
It seems a little unfair to compare a huge package like Enlightenment to these lightweight window managers. Enlightenment is, as its website says, a whole suite of libraries, which nowadays means you have to install a whole boatload of stuff to get it running. Used to be, back in the good old days, you could just install it as a big RPM. Without Enlightenment, e16 still works, but it isn't very impressive. Adding the whole enchilada, or the whole banana split, or whatever you want to call it, makes it spectacular. It's a work of art, everything works, and it's easy to configure.
The only problem with Enlightenment is that it's a lot of work to compile. If they could fix that problem, they could soar to number one.
Openbox compiled and installed without too much trouble. The only extra step
was to run
ldconfig so it could find its own libraries.
If you don't, Openbox will crash.
Unfortunately, there's no obvious way to configure Openbox. If you don't like the default appearance, you're stuck. Also, unlike e16, there is no way to annihilate a program—just as with Fluxbox, the little VCR Stop icon in the upper left doesn't do anything. (In e16, the Annihilation Window pops up—very convenient for misbehaving programs.) To configure Openbox, you need to use separate program called obconf. Obconf was a bear to compile on my machine. There's a pre-compiled version, but it only works with old openbox libraries.
Openbox looks nice, but it's a little reminiscent of Windows XP, with similar gradient title bars and rounded corners. Just for fun, I tried to compile obconf, with no success.
configure gave the following result:
No package 'obrender-3.0' found
To get it to configure, you need to create files in /usr/lib/pkgconfig
called obparser-3.0.pc and obrender-3.0.pc. Openbox includes a file called
obrender-3.5.pc, and you can just re-name it to obrender-3.0.pc and obparser-3.0.pc.
No package 'obparser-3.0' found
make in obconf gives the following errors:
In file included from src/about.c:1:
src/main.h:22:28: error: openbox/render.h: No such file or directory
src/main.h:23:30: error: openbox/instance.h: No such file or directory
src/main.h:24:27: error: openbox/parse.h: No such file or directory
In file included from src/about.c:1:
src/main.h:30: error: expected ?=?, ?,?, ?;?, ?asm? or ?__attribute__? before ?doc?
src/main.h:31: error: expected ?=?, ?,?, ?;?, ?asm? or ?__attribute__? before ?root?
src/main.h:32: error: expected ?=?, ?,?, ?;?, ?asm? or ?__attribute__? before ?*? token
Two of these three files are part of openbox, and you can just copy them over:
cp ../openbox-3.5.0/obrender/render.h ./openbox/
cp ../openbox-3.5.0/obrender/instance.h ./openbox/
However, parse.h is nowhere to be found. I tried to create a parse.h
from the file
./openbox-3.5.0/obt/ddparse.h but it gave
numerous errors. Interestingly, the parse.h file from e16-1.0.10 worked
A huge number of other compilation errors came after this. Eventually I realized it was hopeless.
Compiling the modestly named "awesome" window manager is easy: just type
make. You get the error message:
Awesome not only insists on cmake, but cmake 2.8.0 or higher. Why would
anyone write a program that only compiles under a specific version of make?
Someday, I hope I will know the answer.
/bin/sh: cmake: command not found
Update: A few months later I happened to install cmake and ran it against awesome, and obtained the following results:
-- package 'libxdg-basedir>=1.0.0' not found
XDG Base Directory is a library that, according to its web page,
defines where files should be looked for by defining one or more base
directories relative to which files should be located. The trick, it seems,
is finding it.
CMake Error at /usr/local/share/cmake-2.8/Modules/FindPkgConfig.cmake:279 (message):
A required package was not found
Blackbox bombed out with the following error:
Image.cc:1350: error: 'memcpy' was not declared in this scope
These errors are easy to fix: just add the following lines to lib/Image.cc,
Resource.cc, and blackbox.hh:
(Yes, strings.h and string.h are two totally different files, with different prototypes, and you need both.)
That brings us to the show-stopper:
XDG.cc:65: error: 'find' is not a member of 'std'
If you manage to fix this error, there are many more
errors down the line, like this one:
bsetroot.cc:353: error: ?::exit? has not been declared
It's possible that it might compile in a newer version of Suse. ( Update: Not in 12.1. )
This one, whose name sounds more like a type of ammunition than a window manager,
hasn't been updated since 2009.
Make gave numerous warnings, but it compiled
successfully and even started up. But talk about minimalist—there was not even a
title bar for the windows. Clicking on the background gives you the option of opening a
green xterm or closing a green xterm. There was no obvious way to configure it or
move windows around on the screen. I must be missing something here, but what?
Maybe there's a Glock that's supposed to come with it.
This one has improved greatly since the last time I tried it. The default
is now a gradient title bar and a gray gradient background, called the LeetWM
theme. Other themes are available. Clicking on the background brings up
a config menu, very much like Fluxbox, except that the last item opens
a preferences utility. Unlike Fluxbox, which uses a text file in the user's
home directory, Windowmaker stores its settings in a non-editable binary file
Also, unlike Fluxbox, I could find no way to change the size of the title bar.
In Windowmaker, there are strange icons in the corner. One looks like
the upper left 1/4 corner of wmtime, which is a little clock program that I
was running. The other icons didn't do much.
Windowmaker comes with a variety of themes that override the settings in your preferences utility. Windowmaker seems to be oriented toward 8-bit displays, as it has lots of dithering and colormap options. There's nothing wrong with that, since it runs fine on 32-bit displays. But Windowmaker has a few focusing anomalies. For instance, if you open a subdialog box in a program, then close it, the focus goes back to the main app window instead of the dialog box. It may not actually turn your wife into a widow (or a window), but all that extra clicking will turn her husband into an old man.
Giant icons everywhere! Afterstep looks like one of Steve Jobs's creations from the 1990s. This, of course, is just a matter of taste. Some people will undoubtedly love Afterstep. I guess I'm not an Apple kind of guy.
Joe's Window Manager
Yes, Joe's is minimalistic. It don't do much fer ya. But after suffering with window managers with broken focus models and creepy blinking eyes, Joe's is like a hot cup of coffee after a long day. Styles? Ptooey. It compiled with no problems, building a binary 16 times smaller than e16. As for documentation ... read the source, baby. There's a sample xml file that you can use to change the fonts, colors, title bar height, and focus mode, and delete the Windowsy task bar at the bottom. Shoot, what else do ya want? It even put my clock in the right place. Granted, by now my expectations had dimmed somewhat, but that impressed me a little.
Metacity is a window manager with a fairly standard appearance, very similar
to Openbox. In fact, the only difference was that that the window titles had a
shadow. To configure it you have to use
gconf-editor. The focus
model is a little screwed up—keystrokes kept going to the wrong window
in nedit—but it wasn't as messed up as fluxbox.
Xfwm4 is the window manager for the xfce desktop. It has big, fat borders around all the windows. Unlike fvwm, xfwm4's config file is in /usr/share/xfwm4/defaults. To configure it, you need the xfce Settings Manager. Documentation is in progress.
Other window manglers
If you're really into the retro 1970s computer science grad student Unix workstation look, give mwm, ctwm, and fvwm a try. They may not be beautiful by today's standards, but they're definitely lightweight. They go well with your HP-25 and your pocket protector.