diff options
-rw-r--r-- | NEWS | 8 | ||||
-rw-r--r-- | README | 4 | ||||
-rw-r--r-- | src/Plugins/Monitors/Batt.hs | 9 | ||||
-rw-r--r-- | src/Plugins/Monitors/Common.hs | 44 | ||||
-rw-r--r-- | src/Plugins/Monitors/Net.hs | 3 | ||||
-rw-r--r-- | src/Plugins/Monitors/Swap.hs | 9 | ||||
-rw-r--r-- | src/Plugins/Monitors/Top.hs | 3 | ||||
-rw-r--r-- | src/Plugins/Monitors/Volume.hs | 3 |
8 files changed, 52 insertions, 31 deletions
@@ -7,11 +7,19 @@ _Incompatible changes_ - `Batt` monitor no longer uses `-c` to specify the charge file: it should figure things out by itself. +_New features_ + + - New monitor option `-d` to specify the number of decimal places to + display for float numbers. Defaults to 0. See [issue 58]. + _Bug fixes_ - Stricter build dependencies versioning in cabal file. - [issue 64]: display of `watts` in `Batt` monitor fixed. +[issue 58]: http://code.google.com/p/xmobar/issues/detail?id=58 +[issue 64]: http://code.google.com/p/xmobar/issues/detail?id=64 + ## Version 0.14 (Dec 10, 2011) _New features_ @@ -764,6 +764,10 @@ These are the arguments that can be used for internal commands in the in the monitor will be represented using 3 digits. - Long option: `--ppad` - Default value: 0 (don't pad) +- `-d` _number_ Decimal digits + - Number of digits after the decimal period to use in float values. + - Long option: `--ddigits` + - Default value: 0 (display only integer part) - `-m` _number_ Minimum field width - Minimum width, in number of characters, of the fields in the monitor template. Values whose printed representation is shorter diff --git a/src/Plugins/Monitors/Batt.hs b/src/Plugins/Monitors/Batt.hs index 24f5263..4445e7a 100644 --- a/src/Plugins/Monitors/Batt.hs +++ b/src/Plugins/Monitors/Batt.hs @@ -151,17 +151,18 @@ runBatt' bfs args = do opts <- io $ parseOpts args c <- io $ readBatteries opts =<< mapM batteryFiles bfs suffix <- getConfigValue useSuffix + d <- getConfigValue decDigits case c of Result x w t s -> do l <- fmtPercent x - parseTemplate (l ++ s:[fmtTime $ floor t, fmtWatts w opts suffix]) + parseTemplate (l ++ s:[fmtTime $ floor t, fmtWatts w opts suffix d]) NA -> return "N/A" where fmtPercent :: Float -> Monitor [String] fmtPercent x = do p <- showPercentWithColors x b <- showPercentBar (100 * x) x return [b, p] - fmtWatts x o s = color x o $ showDigits 1 x ++ (if s then "W" else "") + fmtWatts x o s d = color x o $ showDigits d x ++ (if s then "W" else "") fmtTime :: Integer -> String fmtTime x = hours ++ ":" ++ if length minutes == 2 then minutes else '0' : minutes @@ -170,6 +171,6 @@ runBatt' bfs args = do maybeColor Nothing str = str maybeColor (Just c) str = "<fc=" ++ c ++ ">" ++ str ++ "</fc>" color x o | x >= 0 = maybeColor (posColor o) - | x >= highThreshold o = maybeColor (highWColor o) - | x >= lowThreshold o = maybeColor (mediumWColor o) + | -x >= highThreshold o = maybeColor (highWColor o) + | -x >= lowThreshold o = maybeColor (mediumWColor o) | otherwise = maybeColor (lowWColor o) diff --git a/src/Plugins/Monitors/Common.hs b/src/Plugins/Monitors/Common.hs index 02eb6e1..c9f0843 100644 --- a/src/Plugins/Monitors/Common.hs +++ b/src/Plugins/Monitors/Common.hs @@ -78,6 +78,7 @@ data MConfig = , template :: IORef String , export :: IORef [String] , ppad :: IORef Int + , decDigits :: IORef Int , minWidth :: IORef Int , maxWidth :: IORef Int , padChars :: IORef String @@ -120,6 +121,7 @@ mkMConfig tmpl exprts = t <- newIORef tmpl e <- newIORef exprts p <- newIORef 0 + d <- newIORef 0 mn <- newIORef 0 mx <- newIORef 0 pc <- newIORef " " @@ -128,7 +130,7 @@ mkMConfig tmpl exprts = bf <- newIORef "#" bw <- newIORef 10 up <- newIORef False - return $ MC nc l lc h hc t e p mn mx pc pr bb bf bw up + return $ MC nc l lc h hc t e p d mn mx pc pr bb bf bw up data Opts = HighColor String | NormalColor String @@ -137,6 +139,7 @@ data Opts = HighColor String | High String | Template String | PercentPad String + | DecDigits String | MinWidth String | MaxWidth String | Width String @@ -149,27 +152,27 @@ data Opts = HighColor String options :: [OptDescr Opts] options = - [ Option "H" ["High"] (ReqArg High "number" ) "The high threshold" - , Option "L" ["Low"] (ReqArg Low "number" ) "The low threshold" - , Option "h" ["high"] (ReqArg HighColor "color number" ) "Color for the high threshold: ex \"#FF0000\"" - , Option "n" ["normal"] (ReqArg NormalColor "color number" ) "Color for the normal threshold: ex \"#00FF00\"" - , Option "l" ["low"] (ReqArg LowColor "color number" ) "Color for the low threshold: ex \"#0000FF\"" - , Option "t" ["template"] (ReqArg Template "output template" ) "Output template." - , Option "S" ["suffix"] (ReqArg UseSuffix "True/False" ) "Use % to display percents or other suffixes." - , Option "p" ["ppad"] (ReqArg PercentPad "percent padding") "Minimum percentage width." - , Option "m" ["minwidth"] (ReqArg MinWidth "minimum width" ) "Minimum field width" - , Option "M" ["maxwidth"] (ReqArg MaxWidth "maximum width" ) "Maximum field width" - , Option "w" ["width"] (ReqArg Width "fixed width" ) "Fixed field width" - , Option "c" ["padchars"] (ReqArg PadChars "padding chars" ) "Characters to use for padding" - , Option "a" ["align"] (ReqArg PadAlign "padding alignment") "'l' for left padding, 'r' for right" - , Option "b" ["bback"] (ReqArg BarBack "bar background" ) "Characters used to draw bar backgrounds" - , Option "f" ["bfore"] (ReqArg BarFore "bar foreground" ) "Characters used to draw bar foregrounds" - , Option "W" ["bwidth"] (ReqArg BarWidth "bar width" ) "Bar width" + [ + Option "H" ["High"] (ReqArg High "number") "The high threshold" + , Option "L" ["Low"] (ReqArg Low "number") "The low threshold" + , Option "h" ["high"] (ReqArg HighColor "color number") "Color for the high threshold: ex \"#FF0000\"" + , Option "n" ["normal"] (ReqArg NormalColor "color number") "Color for the normal threshold: ex \"#00FF00\"" + , Option "l" ["low"] (ReqArg LowColor "color number") "Color for the low threshold: ex \"#0000FF\"" + , Option "t" ["template"] (ReqArg Template "output template") "Output template." + , Option "S" ["suffix"] (ReqArg UseSuffix "True/False") "Use % to display percents or other suffixes." + , Option "d" ["ddigits"] (ReqArg DecDigits "decimal digits") "Number of decimal digits to display." + , Option "p" ["ppad"] (ReqArg PercentPad "percent padding") "Minimum percentage width." + , Option "m" ["minwidth"] (ReqArg MinWidth "minimum width") "Minimum field width" + , Option "M" ["maxwidth"] (ReqArg MaxWidth "maximum width") "Maximum field width" + , Option "w" ["width"] (ReqArg Width "fixed width") "Fixed field width" + , Option "c" ["padchars"] (ReqArg PadChars "padding chars") "Characters to use for padding" + , Option "a" ["align"] (ReqArg PadAlign "padding alignment") "'l' for left padding, 'r' for right" + , Option "b" ["bback"] (ReqArg BarBack "bar background") "Characters used to draw bar backgrounds" + , Option "f" ["bfore"] (ReqArg BarFore "bar foreground") "Characters used to draw bar foregrounds" + , Option "W" ["bwidth"] (ReqArg BarWidth "bar width") "Bar width" ] -doArgs :: [String] - -> ([String] -> Monitor String) - -> Monitor String +doArgs :: [String] -> ([String] -> Monitor String) -> Monitor String doArgs args action = case getOpt Permute options args of (o, n, []) -> do doConfigOptions o @@ -190,6 +193,7 @@ doConfigOptions (o:oo) = LowColor c -> setConfigValue (Just c) lowColor Template t -> setConfigValue t template PercentPad p -> setConfigValue (nz p) ppad + DecDigits d -> setConfigValue (nz d) decDigits MinWidth w -> setConfigValue (nz w) minWidth MaxWidth w -> setConfigValue (nz w) maxWidth Width w -> setConfigValue (nz w) minWidth >> diff --git a/src/Plugins/Monitors/Net.hs b/src/Plugins/Monitors/Net.hs index 8382542..1513e07 100644 --- a/src/Plugins/Monitors/Net.hs +++ b/src/Plugins/Monitors/Net.hs @@ -74,7 +74,8 @@ netParser = formatNet :: Float -> Monitor (String, String) formatNet d = do s <- getConfigValue useSuffix - let str = if s then (++"Kb/s") . showDigits 1 else showDigits 1 + dd <- getConfigValue decDigits + let str = if s then (++"Kb/s") . showDigits dd else showDigits dd b <- showLogBar 0.9 d x <- showWithColors str d return (x, b) diff --git a/src/Plugins/Monitors/Swap.hs b/src/Plugins/Monitors/Swap.hs index e466dbb..107eb1e 100644 --- a/src/Plugins/Monitors/Swap.hs +++ b/src/Plugins/Monitors/Swap.hs @@ -42,10 +42,11 @@ parseMEM = return [(tot - free) / tot, tot, tot - free, free] formatSwap :: [Float] -> Monitor [String] -formatSwap (r:xs) = - do other <- mapM (showWithColors (showDigits 2)) xs - ratio <- showPercentWithColors r - return $ ratio:other +formatSwap (r:xs) = do + d <- getConfigValue decDigits + other <- mapM (showWithColors (showDigits d)) xs + ratio <- showPercentWithColors r + return $ ratio:other formatSwap _ = return $ replicate 4 "N/A" runSwap :: [String] -> Monitor String diff --git a/src/Plugins/Monitors/Top.hs b/src/Plugins/Monitors/Top.hs index 6001164..6f16bdb 100644 --- a/src/Plugins/Monitors/Top.hs +++ b/src/Plugins/Monitors/Top.hs @@ -158,7 +158,8 @@ topProcesses tref scale = do return (len, nts', mis') showTimeInfo :: TimeInfo -> Monitor [String] -showTimeInfo (n, t) = showInfo n (showDigits 0 t) t +showTimeInfo (n, t) = + getConfigValue decDigits >>= \d -> showInfo n (showDigits d t) t showTimeInfos :: [TimeInfo] -> Monitor [[String]] showTimeInfos = mapM showTimeInfo diff --git a/src/Plugins/Monitors/Volume.hs b/src/Plugins/Monitors/Volume.hs index 3e3a8b9..8eef780 100644 --- a/src/Plugins/Monitors/Volume.hs +++ b/src/Plugins/Monitors/Volume.hs @@ -97,8 +97,9 @@ formatDb opts dbi = do h <- getConfigValue highColor m <- getConfigValue normalColor l <- getConfigValue lowColor + d <- getConfigValue decDigits let db = fromIntegral dbi / 100.0 - digits = showDigits 0 db + digits = showDigits d db startColor | db >= highDbThresh opts = colorHelper h | db < lowDbThresh opts = colorHelper l | otherwise = colorHelper m |