Back to article
The StartX Files: Like Sands Through the Hourglass...
The Beginning of Something
April 24, 2001
When I was a child (which, according to my wife, was anywhere from 25 years to a couple of days ago, depending on what bonehead stunt I've done this time), staying home sick from school was often a bittersweet experience. On the one hand, I was kind of nice to sit curled up on the recliner, sipping warm 7-UP, reading comic books, and watching Days of Our Lives. On the other hand, the experience was tinged with the knowledge that I would eventually have to go back to school and make up all of the work I missed.
These dreaded days were called catch-up days, where I could get inundated with anything from a few extra worksheets to (in the case of one sadistic sixth-grade teacher) a full-fledged social studies pop test.
Today, catch up days are not such a dread thing, since I usually know what's coming and I can anticipate just how bad being sick will be. And sometimes sickness is not the only reason for being late. Sometimes it's just our own fault. For instance, I was not sick last week, but through a miscommunication, I was unable to get a chance to speak with the developers of PLWM about their window manager until after last week's column.
In case you were sick and missed last week's column, I wrote about PLWM, the Pointless Window Manager, which is actually a collection of Python classes that you can use to create your own graphic environment.
I got a hold of Peter Liljenberg, one of the primary developers of PLWM. Liljenberg is a consultant with a specialization in TCP/IP programming who came up with the idea for PLWM with colleague Morgan Ekl�f.
"A little more than two years ago we were spending a night conversing, as we usually do," Liljenberg explained. "Somehow two ideas collided, which probably had matured for some time. The name 'Pointless Window Manager' also was invented, with a significant incentive to actually implement the ideas."
The first idea in the collision was the developers' desire to control the desktop solely from the keyboard.
"We were both ctwm users at the time, and had spent many hours configuring it," Liljenberg said. "However, ctwm just did not allow some operations to be done using the keyboard, [for instance] resizing windows. Some other operations, [such as] switching focus, was possible but not very convenient. Both of us being programmers, we began thinking of modifying ctwm to allow this."
It was at this point the second idea in the late-night brainstorming session began to emerge. While Liljenberg and Ekl�f knew they could put something together that would work using conventional techniques, they thought it would be rather redundant to create another configuration file language. Why not use a scripting language?
"This idea was prompted by the repelling thought of having to make the .ctwmrc even more cluttered to make it possible to control the new features we wanted," Liljenberg explained. "We also saw the huge win of being able to write new functionality in one's configuration file, functionality not envisaged by the window manager's programmers.
"We were aware of gwm, which used Lisp for its 'configuration,' allowing this extensibility which we wanted. We took this idea one step further, and realized the massive benefits of implementing the window manager in an existing dynamic scripting language, and using the same language for the configuration," he added.
As for the choice in scripting language, Python was the best choice, since both programmers know and love working with it.
"Python's gorgeous support for object oriented programming made it easy to reach the final conclusion: implementing a window manager as a set of general classes which can be extended with the requested functionality, either by using functions provided by an extension library or by implementing them oneself," Liljenberg stated.