
On Jul 31, 2007, at 5:37 , Andrea Rossato wrote:
On Mon, Jul 30, 2007 at 08:47:11PM +0200, Tobias Hammerschmidt wrote:
I like the idea too! Maybe this is a little bit off-topic but why don't use a standard like dbus? There are allready some haskell bindings out there (http://neugierig.org/software/hdbus/ -- ok they were not updated for about a year but maybe it could be a point to start from though).
well, we could have a look at dbus too, but the problem is finding a way to listening for external commands without blocking XMonad (which is already blocked, in the "forever" loop, by nextEvent).
I would say that passing commands through the X server is *the* correct way to communicate between X11 clients, including between a window manager and another client; it is what relates them to each other. Unfortunately, while the ideal way to do it is XSendEvent, that is a seriously broken and insecure API --- hence the use of properties. That said, you might want to look at http://sequence.complete.org/ node/257 for an example of selecting on multiple connections, using a command channel socket and the X11 ConnectionNumber($display) macro. (Just be careful to do all other X11 actions in the main thread; only forkIO the listener on ConnectionNumber, not the actual X11 actions.) -- brandon s. allbery [solaris,freebsd,perl,pugs,haskell] allbery@kf8nh.com system administrator [openafs,heimdal,too many hats] allbery@ece.cmu.edu electrical and computer engineering, carnegie mellon university KF8NH