Finally, do you have an example of something you can do with the
eventGetter that cannot be done with handleEventHook?
One thing I've wanted is the ability to hook into GHC's I/O manager instead of polling X11 directly. Currently, other threads will not run until xmonad receives an X11 event, because it's blocked in the FFI instead of the I/O manager monitoring the X11 socket. This also means you can't sensibly wait on both a socket/pipe and X11 events.
(Doing the above right also implies that either we synthesize X11 events for non-X11 events, or add an additional eventHook for them. The latter is probably easier, since the former either needs to "steal" an event type from X11 or a rather nonsensical patch to the X11 bindings to support a non-X11 event as an "X11" event type.)