diff options
-rw-r--r-- | src/Window.hs | 10 | ||||
-rw-r--r-- | src/Xmobar.hs | 7 |
2 files changed, 11 insertions, 6 deletions
diff --git a/src/Window.hs b/src/Window.hs index 7ff1ffe..29e1516 100644 --- a/src/Window.hs +++ b/src/Window.hs @@ -162,8 +162,14 @@ hideWindow d w = do unmapWindow d w sync d False -showWindow :: Display -> Window -> IO () -showWindow d w = mapWindow d w >> sync d False +showWindow :: Rectangle -> Config -> Display -> Window -> IO () +showWindow r cfg d w = do + srs <- getScreenInfo d + a <- internAtom d "_NET_WM_STRUT_PARTIAL" False + c <- internAtom d "CARDINAL" False + changeProperty32 d w a c propModeReplace $ map fi $ + getStrutValues r (position cfg) (getRootWindowHeight srs) + mapWindow d w >> sync d False isMapped :: Display -> Window -> IO Bool isMapped d w = fmap ism $ getWindowAttributes d w diff --git a/src/Xmobar.hs b/src/Xmobar.hs index a74db7d..d2d29ad 100644 --- a/src/Xmobar.hs +++ b/src/Xmobar.hs @@ -132,7 +132,7 @@ checker tvar ov vs signal = do -- | Continuously wait for a signal from a thread or a interrupt handler eventLoop :: TVar [String] -> XConf -> TMVar SignalType -> IO () -eventLoop tv xc@(XConf d _ w fs cfg) signal = do +eventLoop tv xc@(XConf d r w fs cfg) signal = do typ <- atomically $ takeTMVar signal case typ of Wakeup -> do @@ -167,9 +167,8 @@ eventLoop tv xc@(XConf d _ w fs cfg) signal = do reveal t | t == 0 = if isPersistent then do - r' <- repositionWin d w fs cfg - showWindow d w - eventLoop tv (XConf d r' w fs cfg) signal + showWindow r cfg d w + eventLoop tv xc signal else eventLoop tv xc signal | otherwise = do void $ forkIO |