diff options
-rw-r--r-- | XMobar.hs | 14 |
1 files changed, 10 insertions, 4 deletions
@@ -84,7 +84,7 @@ eventLoop = ps <- io $ parseString c i drawInWin ps -- back again: we are never ending - io $ threadDelay $ 100000 * refresh c + io $ tenthSeconds (refresh c) eventLoop -- | The function to create the initial window @@ -191,7 +191,7 @@ runCommandLoop :: MVar String -> Config -> (String,String,String) -> IO () runCommandLoop var conf c@(s,com,ss) | com == "" = do modifyMVar_ var (\_ -> return $ "Could not parse the template") - threadDelay (100000 * (refresh conf)) + tenthSeconds (refresh conf) runCommandLoop var conf c | otherwise = do (i,o,e,p) <- runInteractiveCommand (com ++ concat (map (' ':) $ getOptions conf com)) @@ -205,11 +205,11 @@ runCommandLoop var conf c@(s,com,ss) ExitSuccess -> do str <- hGetLine o closeHandles modifyMVar_ var (\_ -> return $ s ++ str ++ ss) - threadDelay (100000 * (getRefRate conf com)) + tenthSeconds (getRefRate conf com) runCommandLoop var conf c _ -> do closeHandles modifyMVar_ var $ \_ -> return $ "Could not execute command " ++ com - threadDelay (100000 * (getRefRate conf com)) + tenthSeconds (getRefRate conf com) runCommandLoop var conf c @@ -260,3 +260,9 @@ initColor dpy c = (color_pixel . fst) `liftM` allocNamedColor dpy colormap c -- | Short-hand for lifting in the IO monad io :: IO a -> Xbar a io = liftIO + +tenthSeconds :: Int -> IO () +tenthSeconds s = + threadDelay n + where n | (maxBound :: Int) `div` 100000 <= s = (maxBound :: Int) + | otherwise = s * 100000 |