Fvwm Python Module

Here is release version 2.0 of my Python module interface to Fvwm 2. Much thanks go to Jonathan Kelley for his fvwmmod.py module for Fvwm version 1 which inspired this work. The main module is the Fvwm.py module.

I've done a bunch of restructuring of the code, and updated it for Fvwm version 2. I've integrated this with Tkinter so your modules can now create windows. You need to have configured Python to work with Tk to use the GUI, but it is not required to run non-GUI modules. Here's a little bit of information on how to use the module from within Fvwm.

I've also written a companion module called Tracker.py which is used to track the information about all windows as various Fvwm events occur.

I have a few example modules based on Fvwm.py:

  • Snap.py for defining Snap To locations.
  • Pyquiter.py which displays a dialog for Fvwm quit confirmation.
  • Pydesks.py, a Ctwm-like desktop manager.
This stuff is still in development so I'd really love to get feedback from anybody who uses it. I'm a firm believer that a scripting language like Python beats the hell out of C for developing modules. The turn around time is much better, and the high-level GUI toolkit Tk is so much easier to use than any C level toolkit. There are a few gotchas that you need to know about though.

While Fvwm 2.x's module API is a very cool idea, in practice it's less convenient than it should be. Ultimately I'd love to embed the Python interpreter directly into Fvwm, and rewrite most of the built-in functions, all the configurations, and all of the modules to use Python. This would create a very flexible window manager unapproached by anything since GWM. If you're interested in something like this, let me know!

These modules are docstring'd and commented, although I'll try to do a better job of that for future releases. Here are semblances of manuals for the various packages:

Download

The source tarball is here. The md5checksum is:
f36b3cfade2ce24e5b280c3a405d3632  Fvwmpy-2.0.tgz
And here is the GPG signature. My public key is available here.