2009/2/19 Vincent St-Amour stamourv@iro.umontreal.ca:
No offense intended, but I think re-implementing window managers in Haskell/Scheme/<current language of choice> seems a bit Not-Invented-Here syndrome-ish. If it ain't broke, don't fix it - since there's lots of other interesting things to fix/create.
Yes and no. The WM is one of your most intimate connections to the system and there's a lot to be said for what you learn in writing one. That said:
I'm currently using stumpWM (a tiling WM written in Common Lisp), and I find it quite nice to be able to add code on the fly to the WM, and to be able to extend it in Lisp rather than in some configuration file with its own syntax. I'd compare it to emacs for extensibility.
Which is exactly my point. And you can learn an awful lot about UI design (at least how *you* like to relate to the machine) from hacking on a properly extensible WM. Such as:
Of course, having a window manager running with Gambit would be even better. SCWM (Scheme Constraints Window Manager) could be a nice starting point, but does not seem to have been updated since 2000.
And SCWM was the proximate cause for me to learn Scheme. I had become interested in Lisps through hacking on emacs and wanted a WM that was similarly flexible. SCWM's death has been a great disappointment to me, it was a great WM. But I don't think you'll find its code is a good starting point. For one, it was pretty intimately tied into the Guile of the time - which sucked; and it also did a lot of work in C - which also sucked. A fresh start using Gambit's excellent FFI for connecting to the X11 libraries would be the way to go about it. On the other hand SCWM could be a goo candidate for design-level reuse.
But the gripping hand is that you will have to rewrite it from scratch. That's not a small job, but it's also not huge.
david