diff options
-rw-r--r-- | Plugins/Monitors/Batt.hs | 16 |
1 files changed, 11 insertions, 5 deletions
diff --git a/Plugins/Monitors/Batt.hs b/Plugins/Monitors/Batt.hs index 0c2219a..c4e463a 100644 --- a/Plugins/Monitors/Batt.hs +++ b/Plugins/Monitors/Batt.hs @@ -17,6 +17,9 @@ module Plugins.Monitors.Batt where import qualified Data.ByteString.Lazy.Char8 as B import Plugins.Monitors.Common +data Batt = Batt Float + | NA + battConfig :: IO MConfig battConfig = mkMConfig "Batt: <left>" -- template @@ -34,7 +37,7 @@ readFileBatt (i,s) = b <- catch (B.readFile s) (const $ return B.empty) return (a,b) -parseBATT :: IO Float +parseBATT :: IO Batt parseBATT = do (a1,b1) <- readFileBatt fileB1 (a2,b2) <- readFileBatt fileB2 @@ -43,8 +46,9 @@ parseBATT = x -> read x (f1, p1) = (sp (3,2) a1, sp (2,4) b1) (f2, p2) = (sp (3,2) a2, sp (2,4) b2) - return $ (p1 + p2) / (f1 + f2) --present / full - + left = (p1 + p2) / (f1 + f2) --present / full + return $ if isNaN left then NA else Batt left + formatBatt :: Float -> Monitor [String] formatBatt x = do let f s = floatToPercent (s / 100) @@ -54,5 +58,7 @@ formatBatt x = runBatt :: [String] -> Monitor String runBatt _ = do c <- io $ parseBATT - l <- formatBatt c - parseTemplate l + case c of + Batt x -> do l <- formatBatt x + parseTemplate l + NA -> return "N/A" |