diff options
author | Ben Boeckel <mathstuf@gmail.com> | 2012-03-11 12:11:12 -0400 |
---|---|---|
committer | Ben Boeckel <mathstuf@gmail.com> | 2012-03-11 13:42:58 -0400 |
commit | aeaaf8399191adcd0cccc92ae879c41c4ff8357d (patch) | |
tree | 12f9258f38c6b6cdbdc6a46d9d4c1a1273a4674f /src/Xmobar.hs | |
parent | d66bad19cda7db831095d3fa68a550887e03514b (diff) | |
download | xmobar-aeaaf8399191adcd0cccc92ae879c41c4ff8357d.tar.gz xmobar-aeaaf8399191adcd0cccc92ae879c41c4ff8357d.tar.bz2 |
Use Xrandr support from the X11 package
Diffstat (limited to 'src/Xmobar.hs')
-rw-r--r-- | src/Xmobar.hs | 15 |
1 files changed, 4 insertions, 11 deletions
diff --git a/src/Xmobar.hs b/src/Xmobar.hs index dc671fe..3083087 100644 --- a/src/Xmobar.hs +++ b/src/Xmobar.hs @@ -33,6 +33,7 @@ import Prelude hiding (catch) import Graphics.X11.Xlib hiding (textExtents, textWidth) import Graphics.X11.Xlib.Extras import Graphics.X11.Xinerama +import Graphics.X11.Xrandr import Control.Arrow ((&&&)) import Control.Monad.Reader @@ -88,28 +89,20 @@ startLoop xcfg@(XConf _ _ w _ _) vs = do where -- Reacts on events from X eventer signal = - alloca $ \ptrEventBase -> - alloca $ \ptrErrorBase -> allocaXEvent $ \e -> do dpy <- openDisplay "" - -- keyPressMask is the same value as RRScreenChangeNotifyMask - xrrSelectInput dpy (defaultRootWindow dpy) keyPressMask + xrrSelectInput dpy (defaultRootWindow dpy) rrScreenChangeNotifyMask selectInput dpy w (exposureMask .|. structureNotifyMask) - _ <- xrrQueryExtension dpy ptrEventBase ptrErrorBase - xrrEventBase <- peek ptrEventBase - forever $ do nextEvent' dpy e ev <- getEvent e case ev of ConfigureEvent {} -> putMVar signal Reposition ExposeEvent {} -> putMVar signal Wakeup - _ -> - -- 0 is the value of RRScreenChangeNotify - when ( (fromIntegral (ev_event_type ev) - xrrEventBase) == 0) - $ putMVar signal Reposition + RRScreenChangeNotifyEvent {} -> putMVar signal Reposition + _ -> return () -- | Send signal to eventLoop every time a var is updated checker :: TVar [String] -> [String] -> [[(Maybe ThreadId, TVar String)]] -> MVar SignalType -> IO () |