Hello!
Please tell me what you think, of both the patch and the process I'm sending this in-by. First time for both.
Thanks!
* Split out the X event get function from xmonad.
This lets xmonad users specify their own functions that get the next X event,
and consequently have access to the Display and run in xmonad's thread. Useful
for providing such access to other threads.
New patches:
[Split out the X event get function from xmonad.
Ignore-this: de10517364b9c642552ff62ebb614d28
This lets xmonad users specify their own functions that get the next X event,
and consequently have access to the Display and run in xmonad's thread. Useful
for providing such access to other threads.
] {
hunk ./src/XMonad/Main.hs 49
-- The main entry point
--
xmonad :: (LayoutClass l Window, Read (l Window)) => XConfig l -> IO ()
-xmonad initxmc = do
+xmonad initxmc = xmonad' defaultEventGetter initxmc
+
+-- | Default X event getter.
+defaultEventGetter :: Display -> XEventPtr -> X Event
+defaultEventGetter _ = io . getEvent
+
+-- | Actual entry point, with a parameter for the X event getter. The getter
+-- has access to the X event loop.
+xmonad' :: (LayoutClass l Window, Read (l Window)) => (Display -> XEventPtr -> X Event) -> XConfig l -> IO ()
+xmonad' eventGetter initxmc = do
-- setup locale information from environment
setLocale LC_ALL Nothing
-- ignore SIGPIPE and SIGCHLD
hunk ./src/XMonad/Main.hs 158
userCode $ startupHook initxmc
-- main loop, for all you HOF/recursion fans out there.
- forever $ prehandle =<< io (nextEvent dpy e >> getEvent e)
+ forever $ prehandle =<< eventGetter dpy e
return ()
where
}