[xmonad] Issue 19 in xmonad: Investigate a way to allow contrib extensions to use compositing.

codesite-noreply at google.com codesite-noreply at google.com
Mon Jul 27 02:13:13 EDT 2009

Comment #17 on issue 19 by amdragon: Investigate a way to allow contrib  
extensions to use compositing.

> The advantage of handleEventHook is that you also receive events that  
> would otherwise
> be handled by xmonad.

Ah, that makes sense.  I suppose it doesn't help much in the compositing  
case because
I don't think those messages are caught by xmonad, but I can see it being  
useful for
other things.

> I don't know what you mean by actions not having a way to receive Events

I didn't mean to say it was impossible to receive Events from actions, just
difficult.  From a user's perspective, all you want to do is bind the  
action to a key
and be done with it.  But this doesn't work.

1) Instead of implementing your action as an action, you can implement it  
as a layout
modifier (ala XMonad.Hooks.EventHook).  Now your action is a layout, which  
is weird,
and the user has to both bind the action to a key and, for some mysterious  
wrap their layout hook.

2) Using handleEventHook, you can implement your action as an action, plus  
an event
hook.  If you're handling events you almost certainly also need state,  
which means
you also need something to create the IORef.  Now the user has to "create"  
action, bind it to a key, /and/ modify their handleEventHook.

3) You can have your own event loop (ala XMonad.Prompt).  Now your action  
is just an
action and the user can just bind it to a key like they wanted, but you  
don't play
well with others.  At best, you delay messages, which could be bad if its a  
damage or
timer event aimed at another event handler trying to do compositing or  
animation.  At
worst you eat them.  Ever noticed what happens to  
XMonad.Layout.Decoration's that are
under an XMonad.Prompt or its completions window?  The prompt eats expose  
events, so
the title bars get wiped out and stay wiped out after the prompt closes.   
imagine if you were eating damage or timer events.

Anyways.  This is mostly intended as food for thought: things that are  
going to come
up if/when someone starts working on compositing.

You received this message because you are listed in the owner
or CC fields of this issue, or because you starred this issue.
You may adjust your issue notification preferences at:

More information about the xmonad mailing list