summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--src/Window.hs10
-rw-r--r--src/Xmobar.hs7
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