diff options
author | Jose Antonio Ortega Ruiz <jao@gnu.org> | 2010-12-12 23:51:14 +0100 |
---|---|---|
committer | Jose Antonio Ortega Ruiz <jao@gnu.org> | 2010-12-12 23:51:14 +0100 |
commit | efd9bc7177c66d7bb9a994e919d915ecb5c75154 (patch) | |
tree | 8acc67d927ff801004e45a4b297b35a0953550a4 /Plugins | |
parent | 52be04baa703cb5c0263aecb61f0079230367cd0 (diff) | |
download | xmobar-efd9bc7177c66d7bb9a994e919d915ecb5c75154.tar.gz xmobar-efd9bc7177c66d7bb9a994e919d915ecb5c75154.tar.bz2 |
Uptime as a Monitor
Diffstat (limited to 'Plugins')
-rw-r--r-- | Plugins/Monitors.hs | 4 | ||||
-rw-r--r-- | Plugins/Monitors/Uptime.hs (renamed from Plugins/Uptime.hs) | 35 |
2 files changed, 21 insertions, 18 deletions
diff --git a/Plugins/Monitors.hs b/Plugins/Monitors.hs index 98949cf..a19f82a 100644 --- a/Plugins/Monitors.hs +++ b/Plugins/Monitors.hs @@ -31,6 +31,7 @@ import Plugins.Monitors.CpuFreq import Plugins.Monitors.CoreTemp import Plugins.Monitors.Disk import Plugins.Monitors.Top +import Plugins.Monitors.Uptime #ifdef IWLIB import Plugins.Monitors.Wireless #endif @@ -53,6 +54,7 @@ data Monitors = Weather Station Args Rate | CoreTemp Args Rate | TopProc Args Rate | TopMem Args Rate + | Uptime Args Rate #ifdef IWLIB | Wireless Interface Args Rate #endif @@ -86,6 +88,7 @@ instance Exec Monitors where alias (CoreTemp _ _) = "coretemp" alias (DiskU _ _ _) = "disku" alias (DiskIO _ _ _) = "diskio" + alias (Uptime _ _) = "uptime" #ifdef IWLIB alias (Wireless i _ _) = i ++ "wi" #endif @@ -106,6 +109,7 @@ instance Exec Monitors where start (DiskU s a r) = runM a diskUConfig (runDiskU s) r start (DiskIO s a r) = runM a diskIOConfig (runDiskIO s) r start (TopMem a r) = runM a topMemConfig runTopMem r + start (Uptime a r) = runM a uptimeConfig runUptime r start (TopProc a r) = startTop a r #ifdef IWLIB start (Wireless i a r) = runM (a ++ [i]) wirelessConfig runWireless r diff --git a/Plugins/Uptime.hs b/Plugins/Monitors/Uptime.hs index 6d81acd..453b9ad 100644 --- a/Plugins/Uptime.hs +++ b/Plugins/Monitors/Uptime.hs @@ -1,6 +1,6 @@ ------------------------------------------------------------------------------ -- | --- Module : Plugins.Uptime +-- Module : Plugins.Monitors.Uptime -- Copyright : (c) 2010 Jose Antonio Ortega Ruiz -- License : BSD3-style (see LICENSE) -- @@ -15,19 +15,15 @@ ------------------------------------------------------------------------------ -module Plugins.Uptime (Uptime(..)) where +module Plugins.Monitors.Uptime (uptimeConfig, runUptime) where -import Plugins +import Plugins.Monitors.Common import qualified Data.ByteString.Lazy.Char8 as B -data Uptime = Uptime String Int - deriving (Read, Show) - -instance Exec Uptime where - alias (Uptime a _) = a - run (Uptime _ _) = uptime - rate (Uptime _ r) = r +uptimeConfig :: IO MConfig +uptimeConfig = mkMConfig "Up <days>d <hours>h <minutes>m" + ["days", "hours", "minutes", "seconds"] readUptime :: IO Float readUptime = @@ -36,16 +32,19 @@ readUptime = secsPerDay :: Integer secsPerDay = 24 * 3600 -uptime :: IO String +uptime :: Monitor [String] uptime = do - t <- readUptime + t <- io readUptime + u <- getConfigValue usePercent let tsecs = floor t secs = tsecs `mod` secsPerDay days = tsecs `quot` secsPerDay - hrs = secs `quot` 3600 + hours = secs `quot` 3600 mins = (secs `mod` 3600) `div` 60 - dstr | days == 0 = "" - | otherwise = show days ++ "d " - str x | x < 10 = '0':show x - | otherwise = show x - return $ dstr ++ str hrs ++ ":" ++ str mins + ss = secs `mod` 60 + str x s = if u then show x ++ s else show x + mapM (`showWithColors'` days) + [str days "d", str hours "h", str mins "m", str ss "s"] + +runUptime :: [String] -> Monitor String +runUptime _ = uptime >>= parseTemplate |