From d0c5040aca2add1398e37ef96004924fc8e6ee41 Mon Sep 17 00:00:00 2001 From: jao Date: Tue, 15 Oct 2019 03:01:30 +0100 Subject: Battery: -P to show % --- src/Xmobar/Plugins/Monitors/Batt.hs | 13 +++++++++---- src/Xmobar/Plugins/Monitors/Common/Output.hs | 3 ++- 2 files changed, 11 insertions(+), 5 deletions(-) (limited to 'src') diff --git a/src/Xmobar/Plugins/Monitors/Batt.hs b/src/Xmobar/Plugins/Monitors/Batt.hs index 16137b1..3f407b6 100644 --- a/src/Xmobar/Plugins/Monitors/Batt.hs +++ b/src/Xmobar/Plugins/Monitors/Batt.hs @@ -48,6 +48,7 @@ data BattOpts = BattOpts , lowString :: String , mediumString :: String , highString :: String + , incPerc :: Bool } defaultOpts :: BattOpts @@ -71,6 +72,7 @@ defaultOpts = BattOpts , lowString = "" , mediumString = "" , highString = "" + , incPerc = False } options :: [OptDescr (BattOpts -> BattOpts)] @@ -87,6 +89,7 @@ options = , Option "f" ["online"] (ReqArg (\x o -> o { onlineFile = x }) "") "" , Option "s" ["scale"] (ReqArg (\x o -> o {scale = read x}) "") "" , Option "a" ["action"] (ReqArg (\x o -> o { onLowAction = Just x }) "") "" + , Option "P" ["percent"] (NoArg (\o -> o {incPerc = True})) "" , Option "A" ["action-threshold"] (ReqArg (\x o -> o { actionThreshold = read x }) "") "" , Option "" ["on-icon-pattern"] (ReqArg (\x o -> @@ -243,13 +246,14 @@ runBatt = runBatt' ["BAT", "BAT0", "BAT1", "BAT2"] runBatt' :: [String] -> [String] -> Monitor String runBatt' bfs args = do opts <- io $ parseOpts args + let sp = incPerc opts c <- io $ readBatteries opts =<< mapM batteryFiles bfs suffix <- getConfigValue useSuffix d <- getConfigValue decDigits nas <- getConfigValue naString case c of Result x w t s -> - do l <- fmtPercent x + do l <- fmtPercent x sp ws <- fmtWatts w opts suffix d si <- getIconPattern opts s x st <- showWithColors' @@ -257,13 +261,14 @@ runBatt' bfs args = do (100 * x) parseTemplate (l ++ [st, fmtTime $ floor t, ws, si]) NA -> getConfigValue naString - where fmtPercent :: Float -> Monitor [String] - fmtPercent x = do + where fmtPercent :: Float -> Bool -> Monitor [String] + fmtPercent x sp = do let x' = minimum [1, x] + pc <- if sp then colorizeString (100 * x') "%" else return "" p <- showPercentWithColors x' b <- showPercentBar (100 * x') x' vb <- showVerticalBar (100 * x') x' - return [b, vb, p] + return [b, vb, p ++ pc] fmtWatts x o s d = do ws <- showWithPadding $ showDigits d x ++ (if s then "W" else "") return $ color x o ws diff --git a/src/Xmobar/Plugins/Monitors/Common/Output.hs b/src/Xmobar/Plugins/Monitors/Common/Output.hs index 53c5b0f..7a14a74 100644 --- a/src/Xmobar/Plugins/Monitors/Common/Output.hs +++ b/src/Xmobar/Plugins/Monitors/Common/Output.hs @@ -1,7 +1,7 @@ ------------------------------------------------------------------------------ -- | -- Module: Xmobar.Plugins.Monitors.Strings --- Copyright: (c) 2018 Jose Antonio Ortega Ruiz +-- Copyright: (c) 2018, 2019 Jose Antonio Ortega Ruiz -- License: BSD3-style (see LICENSE) -- -- Maintainer: jao@gnu.org @@ -18,6 +18,7 @@ module Xmobar.Plugins.Monitors.Common.Output ( IconPattern , parseIconPattern , padString + , colorizeString , showWithPadding , showWithColors , showWithColors' -- cgit v1.2.3