[xmonad] bringing xmonad into the threaded world

wagnerdm at seas.upenn.edu wagnerdm at seas.upenn.edu
Mon May 7 16:28:32 CEST 2012


Quoting Mike Meyer <mwm at mired.org>:

> On Mon, 07 May 2012 02:06:31 -0400
> wagnerdm at seas.upenn.edu wrote:
>
>> There have been various times when I've wished I could just spawn a
>> thread in xmonad. Just recently, for example, it was pointed out to me
>>   that the default mod+q binding starts a brand new process just to
>> keep  xmonad responsive while it recompiles the configuration file.
>> This is  silly.
>
> Why is it silly? It's not like the overhead of starting a new process
> is going to be anything but noise compared to recompiling the
> configuration file.

Perhaps silly is the wrong word. But:

Because it means any time I want to do something with X, but keep  
xmonad's response time snappy, I have to create a process, make sure  
that process is in xmonad's PATH with all the confusing debugging  
associated with that (some people on #xmonad actually didn't have  
xmonad in their $PATH!), figure out how to do IPC...

>> Here is a patch bundle that makes xmonad ask X to be thread-safe, and
>> rewrites the default mod+q binding to take advantage of the new thread
>>   safety.
>
> What's the performance hit from making X thread-safe?

There's a hit, but considering xmonad's current strategy of completely  
syncing its internal state with X all the time, this is the wrong  
place to fix a performance problem.

> For that matter, if you are using Haskell threads instead of OS
> threads, do you need to make X thread safe? [Sorry if this is a silly
> question - I'm not really familiar with using Haskell threads.]

I'm fairly certain that GHC will not context-switch during an FFI  
call. So using green threads may be OK. But I'm also not enough of an  
expert to say, and this way is certainly OK.

~d



More information about the xmonad mailing list