Welcome, gentle reader. Sit down, relax, and let me spin a tale for you. A tale of joy, of sadness, of passion and betrayal, a tale of....Linux Window Managers.
(Yes, "over-dramatic" is going to be my keynote here.)
My earliest introduction to the world of *nix Window Managers was Fvwm.
The horror. The clunkiness. The ugliness. Oh, how I hated it.
It began at university. If a workstation wasn't running its own commercial desktop, it was invariably running some old, pre-installed, unconfigured version of Fvwm. Occasionally it was Fvwm95, a superficial imitation of Windows. But it was on my own freshly installed Red Hat Linux system that I truly learned to loathe Fvwm.
I remember Red Hat's Fvwm setup as a byzantine web of config files written in an indecipherable alien language--what I later learned to be M4 scripts. I have vague, nightmarish memories of hot-pink titlebars, fat blocky window borders, black and white load graphs, and garish pixmap buttons. And the puke-green emacs background (at this time, I was too naive to understand what Fvwm controlled and what Xdefaults controlled!). And the page-switch delay, just long enough to be annoying if you were trying to switch, and just short enough to be annoying if you weren't. And the insufferable sloppy focus.
My first timid attempts to tame this monstrosity were soundly squelched. Red Hat's Fvwm was controlled, as mentioned, by a web of system files: it paid no attention to any puny .fvwm2rc in the user's home directory. After a few weeks of flailing, I gave up. I retreated to the comfort of the console, returning to X only when a particularly insatiable Netscape-craving arose.
Fast-forward a year or so. I've gained a lot of confidence with the command line--I'm even doing a bit of *nix programming and scripting--but I still live in fear of Fvwm. But wait! My shiny new Red Hat 6.2 comes with two new alternatives: KDE and Gnome. I install KDE 1.1.2 and give it a whirl.
And I love it.
My god, it actually looks good. It actually makes sense. Who ever thought a Linux window manager could do that? It's pointy and clicky, has a taskbar with launchers, icons with more than 4 bits in the palette, and window borders that aren't 3 inches thick. I click in a window, and it raises like it's supposed to. There are even plain-english config files to play with!
KDE made me fall in love with Linux all over again. I could theme it, tweak it, and generally make it do whatever I wanted. I started with the GUI configuration utilities and worked my way into editing the config files by hand. I have no extant KDE1 screenshots to offer, though I can tell you that for awhile my desktop looked a lot like this.
My first impression of KDE2 was dismal: I compiled it with over-aggressive optimizations and ended up with a crashy, unstable desktop. This experience propelled me into a whirlwind tour of alternate window managers, which ended up being loads of fun and also gave me my first experience with tweaking WM source code. If memory serves, I sampled Enlightenment, Window Maker, and Afterstep briefly, spent a couple of weeks in BlackBox, and a couple more in wm2. wm2 was the subject of an ascetic streak, where, disgusted by the seeming excesses of KDE and Enlightenment, I reveled for awhile in a minimalist environment. It was also the first WM I hacked, thanks to its simple and well-written code.
In due time, I tired of minimalism, and started to miss my friendly old KDE. I decided to give KDE 2.0 another chance. This time, I followed the advice of various net pundits and compiled it with more conservative settings. The result: a much more stable, though still slightly warty desktop. Ironically, it also ran faster than it did with high optimizations!
Over time, KDE 2 and I became good friends. I never fell in love quite the way I did with KDE 1--it bugged me that KDE was growing more complex and less friendly to the casual hacker, and the more I grew as a programmer the more it bugged me--but we had fun. I really liked the new look, particularly the "marble" style and System++ window decorations. I used Konqueror heavily--it never seemed quite as zippy as Netscape 4.x, but it was certainly more modern and featureful. This phase lasted quite a while, and included another brief code-hacking expedition. Here's what my desktop looked like most of the time (click to enlarge):
The titlebars in this screenshot are the result of the aforementioned hacking expedition. I tweaked the System++ plugin so that, like ModSystem, it uses titlebar-foreground instead of window-background as its main titlebar color. Result: it actually looks right :-) (The wishlist/patch for this was ignored and eventually discarded from the KDE bug database without comment--am I the only person who cares about System++?). For any who are interested, here's the patch as applied to KDE 2.2.2.
One other notable feature of this screenshot is the heavy use of Copland Gnome icons, as distributed and tweaked for KDE by the creator of the Photon theme.
My second departure from the KDE world came upon installing KDE 2.1. Unlike most of the world, I was underwhelmed and disenchanted. It was even more heavyweight than 2.0--it seemed like I sat at the desk for a full minute just waiting for KDE to start up! Off I went on my second WM tour, with an eye for the sleek, the fast, and the hacker-friendly. After a sampling of Sawfish and a second taste of Enlightenment and BlackBox, I settled on Window Maker.
Window Maker had seemed unreasonably austere to me on my first try, and I also had bad memories of the original NextStep which inspired it. This time, I tried a little harder to get to know it, and dove into theming, menu editing, and of course, dockapps. This was the next long leg of my Window Manager trek. Window Maker never pleased me entirely; it always seemed a little too restrictive and too quirky (e.g. the resize mechanism, the lack of a visual pager, the "clip", the silly contortions necessary to get one icon to launch multiple xterms). I never really caught on to the Zen of Window Maker, I guess. But it was Good Enough(tm), and it had style. A well-configured Window Maker with lots of alpha-blended dock tiles and Largo icons looks very snappy indeed.
Here's a shot showing one of my favorite Window Maker themes:
So what finally led me away from Window Maker? It seemed the more I got to know it, the more antsy I became. The same tight vision that gave Window Maker an aura of style also made it inflexible and controlling. The developer community mirrored this. The typical mailing list reaction to any suggestion of change was not "show us the patch", but "over our dead bodies". The code itself was out of my league, too complex and multi-layered for my budding X-programming skills to work with. Attempts to make even small cosmetic changes failed.
I went back to KDE for a little while, which by now was up to version 2.2, but quickly realized that I was heading in the opposite direction from where I wanted to go. It had become entirely too heavyweight for my PII 333 (still okay for a patient user, maybe--but I'm not patient :-), and besides, it seemed less casual-hacker-friendly than ever. The code was an enormous wriggling mass that took a full day to compile. Mysterious binary files like "ksyscoca" inhabited my ~/.kde. KDE 2.2 was eminently friendly and usable on a fast system, but it did not encourage dabbling beyond the GUI configuration dialogs.
That's fine for many, but I was becoming more and more of a source-code-twiddling, config-file-editing junkie. I decided to go looking for a Window Manager that truly catered to the soul of a hacker.
You see where this is headed, don't you?
I decided it was time for me to face my old enemy, Fvwm. I had evolved quite a bit since our last meeting, into less of a passive user and more of a hacker, and had heard a lot of interesting rumors as well. I heard that Fvwm was boundlessly flexible, and had hidden delights to offer those who could tame it. I heard that it was scriptable beyond the dreams of mortals. I even heard that, despite the contrary evidence of almost every Fvwm screenshot in existence, it could actually look good! All of this turned out to be true. And so I came full circle.
Now, let me play the role of proselytizer, and tell you some things you may not know about this underrated little WM. Fvwm can be just about anything you want it to be. The fat pink title bars and motif window decorations are not obligatory--but that's only the beginning. Want click-to-focus? You've got it. Want cute dockapps? They work just fine in FvwmButtons. Want fancy pixmaps in your titlebars? Go ahead. How about an MP3 playlist at the click of a mouse button, or a menu-based file browser? Write a Perl script and use PipeRead. Fvwm's dynamic menus are more powerful than those of any other Window Manager I've seen (save possibly AfterStep, its offspring).
You can make Fvwm look like just about any other WM you want. It can give an almost perfect imitation of Window Maker, 'Doze, probably even BlackBox. But let me warn you: it doesn't want to. Fvwm is Fvwm. It has a soul of its own. It is not trendy. It is not l33t. It does not have a Vision. It doesn't even have a pronounceable name (although the F is pronounced "Feline" :-). It has a user base with lots of technical know-how but decidedly odd ideas about aesthetics. Fortunately, you're allowed to invent your own beauty.
The soul of Fvwm is Frankenstein. Write a 20-page .fvwm2rc. Take the best elements from all the other WM's and discard the rest, and Fvwm will be happy, and so will you. Example: I recently surfed over to the website of a new trendy WM called FluxBox. I noticed an item in the feature list, "wheel scroll changes workspace", and thought "ah, neat idea". I pulled up my .fvwm2rc in emacs, and a few minutes later, my mouse wheel switched workspaces for me. That is the joy of Fvwm.
The more I use Fvwm, the less patience I have with the limitations of newer, supposedly better Window Managers. I feel I'm a slave to the preferences, prejudices, and oversights of the author. Why can't I bind the keypad keys in KDE, without having to use a modifier? Why can't I ever have more than two titlebar buttons in Window Maker? What does BlackBox have against pixmaps? Why do so few WM's bother to implement a proper virtual desktop?
You get the idea. Well, Fvwm goes the opposite route. You can have ten different titlebar buttons if you really want. Believe it or not, some people do.
Over time, I even grew to like a few of the same Fvwm hallmarks that had repulsed me in the beginning. Sloppy focus, automatic page-switching, and non-click-raises all won me over eventually. I now get claustrophobic in MS Windows without other pages to move to, impatient when I can't change focus with a nudge of the mouse or copy text in a window without raising it.
Another point of interest: Fvwm's source code. I had heard ominous mentions of how old, crufty and complex it was, having been based on the original TWM, but when I actually went in and played with it, I found the code quite clear and easy to change. I was able to ameliorate one of the few aesthetic drawbacks of Fvwm that could not be fixed by .fvwm2rc alone: the lack of multiple-pixmap-themable titlebars. What's more, the developers warmly welcomed my patch (after my showing off a screenshot or two :-) and added it to CVS. Another such drawback--Fvwm's lack of PNG support--has also recently been addressed. With alpha-blending, no less!
Oh--and Fvwm fully supports EWMH.
The developer community is low-key, but active and enthusiastic in their work. This, for me, is a major plus, and stands in sharp contrast to the negative vibes on the Window Maker mailing list. Contrary to popular belief, Fvwm is far from a dead project. It isn't for everyone, but if you're the kind of person who prefers Mutt to Evolution, prefers typing to clicking, gets annoyed when programs write their config files without asking, and generally expects their WM to do what they say when they say without a fuss, then it might just be for you. And if you're not that kind of person, well...wait for it. Linux tends to have this effect on people :-)
So, on to the next screenshots. The below two depict a configuration I used for quite some time, before finally discarding it in favor of my current setup. Pager, mini-xterm, and icon manager / tasklist on the upper left, gkrellm the uber-monitor at lower right, mini-snapshot of the current background in the pager.
My theming setup was/is built around a glorified Perl script, fvwm-theme. Each theme specified a background, a window decor, a gkrellm skin, and an xterm theme, and changing these settings en masse or individually was a matter of a few mouse clicks. The window decorations shown off here are not possible with the current stable Fvwm, but bear with me and I'll tell you how to get the patch :-)
Having fallen head-over-heels for my old nemesis, I never parted ways with Fvwm again--but I did decide to give KDE 2.2.2 a whirl on the side. Background: I came home to Virginia for an extended visit with my parents, while my husband and I sorted out Issues with the Canadian Immigration office. It's a long story. Anyhow, my mother's shiny new 1 gig Athlon was soon running Linux (Slackware, my new distro of choice) alongside Windows XP, and given its horsepower, it seemed like a prime candidate for KDE. And indeed, with a bit of spit and polish (iKons, new splash screen, System++ patch), it ran well. Here's what it looked like:
(The redheaded dolphin lover in the floral shirt is my mother.)
Back home in Canada, I decided, with some trepidation, to try installing the latest KDE 3.0.1 on our old PII 333 (if only for my husband's sake--he likes doing his thesis work in *nix, but he really doesn't like endlessly fiddling with a window manager). So I did, and oy, it was slower than ever. Pretty, though. Here's what my setup for him looked like:
Many of the icons seen above come from a nifty package over at KDE Look called Free Icons. The icons are more original than the name :-)
I will always have a soft spot in my heart for KDE, I think. Like Fvwm, its developer community is active and friendly. KDE holds the original credit for taking away my fear and loathing of X, and doubtless that of many other Linux newbies. However, even Michael tired of its bloatedness eventually, and the way said bloatedness taxed the resources of our aging computer. This led to the creation of fvwm-desktop, a simple Windoze-esque desktop built on top of Fvwm.
And now, what you've all been waiting for: my Fvwm Setup du jour. Despite the awesome compact utility of gkrellm, I ended up discarding it. While gkrellm looks just spiffy on space-age L33T desktops, the only time I run L33T desktops is when I'm making screenshots. Set against the naturey backgrounds and wood-backed xterms I usually favor, gkrellm sticks out like a sore thumb, no matter what skin it's wearing. So I replaced it with a handful of cute dockapps, and my desktop has been more appealing ever since. As you'll see, I also tired of the mini-wallpaper-in-the-pager trick.
So, without further ado, three brand new screenshots:
Want to learn more about my setup? I've documented the whole thing here, including pixmaps, patches, and Perl scripts.
Site Updated: 2011/April/04
Copyright © 2011, All Rights Reserved. Check the credits before you borrow any of the graphics on these pages.