The StartX Files: Like Sands Through the Hourglass...
The Beginning of Something

Brian Proffitt
Tuesday, April 24, 2001 08:17:57 AM
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.
Next: Reaping the Rewards »