summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--news.md9
-rw-r--r--readme.md10
-rw-r--r--src/Plugins/Monitors/Batt.hs14
3 files changed, 31 insertions, 2 deletions
diff --git a/news.md b/news.md
index bc4abce..0379160 100644
--- a/news.md
+++ b/news.md
@@ -1,5 +1,14 @@
% xmobar - Release notes
+## Version 0.18
+
+_New features_
+
+ - The battery monitor accepts template variables in its `-O` and
+ `-o` (on/off AC-status) arguments (see [github #109]).
+
+[github #109]: https://github.com/jaor/xmobar/issues/109
+
## Version 0.17 (May 5, 2013)
_New features_
diff --git a/readme.md b/readme.md
index 013f9d6..6055f56 100644
--- a/readme.md
+++ b/readme.md
@@ -764,6 +764,16 @@ something like:
neither the generic nor the specific options have any effect on
`<timeleft>`.
+ It is also possible to specify template variables in the `-O` and
+ `-o` switches, as in the following example:
+
+ Run BatteryP ["BAT0"]
+ ["-t", "<acstatus>"
+ , "-L", "10", "-H", "80"
+ , "-l", "red", "-h", "green"
+ , "--", "-O", "Charging", "-o", "Battery: <left>%"
+ ] 10
+
### `TopProc Args RefreshRate`
- Aliases to `top`
diff --git a/src/Plugins/Monitors/Batt.hs b/src/Plugins/Monitors/Batt.hs
index a593782..27007f9 100644
--- a/src/Plugins/Monitors/Batt.hs
+++ b/src/Plugins/Monitors/Batt.hs
@@ -1,7 +1,7 @@
-----------------------------------------------------------------------------
-- |
-- Module : Plugins.Monitors.Batt
--- Copyright : (c) 2010, 2011, 2012 Jose A Ortega
+-- Copyright : (c) 2010, 2011, 2012, 2013 Jose A Ortega
-- (c) 2010 Andrea Rossato, Petr Rockai
-- License : BSD-style (see LICENSE)
--
@@ -149,6 +149,14 @@ readBatteries opts bfs =
runBatt :: [String] -> Monitor String
runBatt = runBatt' ["BAT0","BAT1","BAT2"]
+statusTemplate:: String -> [String] -> Monitor String
+statusTemplate s vs = do
+ t <- getConfigValue template
+ setConfigValue (s ++ "<acstatus>") template
+ r <- parseTemplate vs
+ setConfigValue t template
+ return r
+
runBatt' :: [String] -> [String] -> Monitor String
runBatt' bfs args = do
opts <- io $ parseOpts args
@@ -158,7 +166,9 @@ runBatt' bfs args = do
case c of
Result x w t s ->
do l <- fmtPercent x
- parseTemplate (l ++ s:[fmtTime $ floor t, fmtWatts w opts suffix d])
+ let ts = [fmtTime $ floor t, fmtWatts w opts suffix d]
+ s' <- statusTemplate s (l ++ "":ts)
+ parseTemplate (l ++ s':ts)
NA -> return "N/A"
where fmtPercent :: Float -> Monitor [String]
fmtPercent x = do