[Xmonad] xmobar-0.7rc1 testers needed
mailing_list at istitutocolli.org
Wed Jul 18 02:53:14 EDT 2007
On Tue, Jul 17, 2007 at 06:19:13PM -0500, Spencer Janssen wrote:
> It is possible, but annoying. It requires a magic version of nextEvent that
> doesn't block inside foreign calls. Thankfully, this isn't so hard to write
> with threadWaitRead and XPending. With this magic nextEvent, we can use
> asynchronous exceptions to interrupt the thread with a timer. I've sent you
> a patch that implements this.
Just a marginal note. I'm thinking about writing a tutorial about X
programming for the Haskell.org wiki.
I think, indeed, that some documentation for writing an X application,
such as a status bar, in Haskell could be useful. My major problem,
indeed, is that I could not find code examples, and I presume I'm not
the only one that can grasp Haskell but have quite some problems in
I was lucky because there is this XMonad project going on, with you
guys, real X and/or Haskell experts. Since I'm sure I'm going to
forget everything in a couple of months, if I write it down all the
information that thanks to your help I was able to gather won't get
This is basically the possible outline of such a tutorial:
1. the process of windows creation and mapping - (with the Hello World
2. writing to windows (creating a pixmap, writing to it and copying it
to the window, drawing strings, selecting fonts, colors,
calculating string length, etc.)
3. handling events
I think the example code could be a simple splash screen that reads a
text file, and displays each row at every mouse bottom press.
And what about mixing events and time driven updates?
After studying Spencer's code I have the impression that his solution
is the Haskell way of doing this kind of stuff, if I read correctly
the documentation. But I don't now whether I should cover it or
not. I'm afraid it could be confusing and too complicated. On the
other side, since there seems to exist no other Haskell examples of
such a case probably it should be covered and solved with asynchronous
What do you think?
More information about the Xmonad