summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorKrzysztof Kosciuszkiewicz <k.kosciuszkiewicz@gmail.com>2007-07-10 16:08:45 +0200
committerKrzysztof Kosciuszkiewicz <k.kosciuszkiewicz@gmail.com>2007-07-10 16:08:45 +0200
commit528556a36d5ff686689568c61422143276b0dc96 (patch)
tree80d00a09a14146373d20759961bca381771af580
parent8453821a99a4a211b2c489f1a90fa1ecea8a690d (diff)
downloadxmobar-528556a36d5ff686689568c61422143276b0dc96.tar.gz
xmobar-528556a36d5ff686689568c61422143276b0dc96.tar.bz2
Clean up default options for monitors.
* Moved default configuration to Monitors.Common * Colors are optional and are off by default darcs-hash:20070710140845-ba08c-86afb9d30e4b71ad48539510feabde650b1b6045.gz
-rw-r--r--Monitors/Batt.hs21
-rw-r--r--Monitors/Common.hs39
-rw-r--r--Monitors/Cpu.hs21
-rw-r--r--Monitors/Mem.hs23
-rw-r--r--Monitors/Net.hs22
-rw-r--r--Monitors/Swap.hs21
-rw-r--r--Monitors/Weather.hs50
7 files changed, 87 insertions, 110 deletions
diff --git a/Monitors/Batt.hs b/Monitors/Batt.hs
index b3890c8..fcc78fd 100644
--- a/Monitors/Batt.hs
+++ b/Monitors/Batt.hs
@@ -14,25 +14,18 @@
module Monitors.Batt where
-import Data.IORef
import qualified Data.ByteString.Lazy.Char8 as B
import System.Posix.Files
import Monitors.Common
battConfig :: IO MConfig
-battConfig =
- do lc <- newIORef "#FF0000"
- l <- newIORef 25
- nc <- newIORef "#FF0000"
- h <- newIORef 75
- hc <- newIORef "#00FF00"
- t <- newIORef "Batt: <left>"
- p <- newIORef package
- u <- newIORef ""
- a <- newIORef []
- e <- newIORef ["left"]
- return $ MC nc l lc h hc t p u a e
+battConfig = newConfig
+ "Batt: <left>" -- template
+ package -- package
+ "" -- usage tail?
+ [] -- added args
+ ["left"] -- available replacements
fileB1 :: (String, String)
fileB1 = ("/proc/acpi/battery/BAT1/info", "/proc/acpi/battery/BAT1/state")
@@ -84,4 +77,4 @@ main :: IO ()
main =
do let af = runBatt []
runMonitor battConfig af runBatt
--} \ No newline at end of file
+-}
diff --git a/Monitors/Common.hs b/Monitors/Common.hs
index 3408122..a7c33e6 100644
--- a/Monitors/Common.hs
+++ b/Monitors/Common.hs
@@ -20,6 +20,7 @@ module Monitors.Common (
, Opts (..)
, setConfigValue
, getConfigValue
+ , newConfig
, runMonitor
, runM
, io
@@ -65,11 +66,11 @@ import System.Exit
type Monitor a = ReaderT MConfig IO a
data MConfig =
- MC { normalColor :: IORef String
+ MC { normalColor :: IORef (Maybe String)
, low :: IORef Int
- , lowColor :: IORef String
+ , lowColor :: IORef (Maybe String)
, high :: IORef Int
- , highColor :: IORef String
+ , highColor :: IORef (Maybe String)
, template :: IORef String
, packageName :: IORef String
, usageTail :: IORef String
@@ -98,6 +99,24 @@ getConfigValue :: Selector a -> Monitor a
getConfigValue s =
sel s
+newConfig :: String
+ -> String
+ -> String
+ -> [OptDescr Opts]
+ -> [String]
+ -> IO MConfig
+newConfig tmpl pkg usg args exprts =
+ do lc <- newIORef Nothing
+ l <- newIORef 33
+ nc <- newIORef Nothing
+ h <- newIORef 66
+ hc <- newIORef Nothing
+ t <- newIORef tmpl
+ p <- newIORef pkg
+ u <- newIORef usg
+ a <- newIORef args
+ e <- newIORef exprts
+ return $ MC nc l lc h hc t p u a e
data Opts = Help
| Version
@@ -162,9 +181,9 @@ doConfigOptions (o:oo) =
Version -> io $ versinfo pn version >> exitWith ExitSuccess
High h -> setConfigValue (read h) high >> next
Low l -> setConfigValue (read l) low >> next
- HighColor hc -> setConfigValue hc highColor >> next
- NormalColor nc -> setConfigValue nc normalColor >> next
- LowColor lc -> setConfigValue lc lowColor >> next
+ HighColor hc -> setConfigValue (Just hc) highColor >> next
+ NormalColor nc -> setConfigValue (Just nc) normalColor >> next
+ LowColor lc -> setConfigValue (Just lc) lowColor >> next
Template t -> setConfigValue t template >> next
_ -> next
@@ -279,11 +298,13 @@ stringParser :: Pos -> B.ByteString -> String
stringParser (x,y) =
flip (!!) x . map B.unpack . B.words . flip (!!) y . B.lines
-setColor :: String -> Selector String -> Monitor String
+setColor :: String -> Selector (Maybe String) -> Monitor String
setColor str s =
do a <- getConfigValue s
- return $ "<fc=" ++ a ++ ">" ++
- str ++ "</fc>"
+ case a of
+ Nothing -> return str
+ Just c -> return $
+ "<fc=" ++ c ++ ">" ++ str ++ "</fc>"
showWithColors :: (Float -> String) -> Float -> Monitor String
showWithColors f x =
diff --git a/Monitors/Cpu.hs b/Monitors/Cpu.hs
index 6f9b4fd..d629c14 100644
--- a/Monitors/Cpu.hs
+++ b/Monitors/Cpu.hs
@@ -16,21 +16,14 @@ module Monitors.Cpu where
import Monitors.Common
import qualified Data.ByteString.Lazy.Char8 as B
-import Data.IORef
cpuConfig :: IO MConfig
-cpuConfig =
- do lc <- newIORef "#BFBFBF"
- l <- newIORef 2
- nc <- newIORef "#00FF00"
- h <- newIORef 60
- hc <- newIORef "#FF0000"
- t <- newIORef "Cpu: <total>"
- p <- newIORef package
- u <- newIORef ""
- a <- newIORef []
- e <- newIORef ["total","user","nice","system","idle"]
- return $ MC nc l lc h hc t p u a e
+cpuConfig = newConfig
+ "Cpu: <total>" -- template
+ package -- package
+ "" -- usage tail?
+ [] -- added args
+ ["total","user","nice","system","idle"] -- available replacements
cpuData :: IO [Float]
cpuData = do s <- B.readFile "/proc/stat"
@@ -70,4 +63,4 @@ main :: IO ()
main =
do let af = runCpu []
runMonitor cpuConfig af runCpu
--} \ No newline at end of file
+-}
diff --git a/Monitors/Mem.hs b/Monitors/Mem.hs
index 41f496d..4fd6434 100644
--- a/Monitors/Mem.hs
+++ b/Monitors/Mem.hs
@@ -16,21 +16,14 @@ module Monitors.Mem where
import Monitors.Common
-import Data.IORef
-
memConfig :: IO MConfig
-memConfig =
- do lc <- newIORef "#BFBFBF"
- l <- newIORef 300
- nc <- newIORef "#00FF00"
- h <- newIORef 500
- hc <- newIORef "#FF0000"
- t <- newIORef "Mem: <usedratio>% (<cache>M)"
- p <- newIORef package
- u <- newIORef ""
- a <- newIORef []
- e <- newIORef ["total", "free", "buffer", "cache", "rest", "used", "usedratio"]
- return $ MC nc l lc h hc t p u a e
+memConfig = newConfig
+ "Mem: <usedratio>% (<cache>M)" -- template
+ package -- package
+ "" -- usage tail?
+ [] -- added args
+ ["total", "free", "buffer", -- available replacements
+ "cache", "rest", "used", "usedratio"]
fileMEM :: IO String
fileMEM = readFile "/proc/meminfo"
@@ -64,4 +57,4 @@ main :: IO ()
main =
do let af = runMem []
runMonitor monitorConfig af runMem
--} \ No newline at end of file
+-}
diff --git a/Monitors/Net.hs b/Monitors/Net.hs
index addee47..646b15e 100644
--- a/Monitors/Net.hs
+++ b/Monitors/Net.hs
@@ -15,8 +15,6 @@
module Monitors.Net where
import Monitors.Common
-
-import Data.IORef
import Text.ParserCombinators.Parsec
data NetDev = NA
@@ -29,18 +27,12 @@ interval :: Int
interval = 500000
netConfig :: IO MConfig
-netConfig =
- do lc <- newIORef "#BFBFBF"
- l <- newIORef 0
- nc <- newIORef "#00FF00"
- h <- newIORef 32
- hc <- newIORef "#FF0000"
- t <- newIORef "<dev>: <rx>|<tx>"
- p <- newIORef package
- u <- newIORef "dev"
- a <- newIORef []
- e <- newIORef ["dev", "rx", "tx"]
- return $ MC nc l lc h hc t p u a e
+netConfig = newConfig
+ "<dev>: <rx>|<tx>" -- template
+ package -- package
+ "dev" -- usage tail?
+ [] -- added args
+ ["dev", "rx", "tx"] -- available replacements
fileNET :: IO String
fileNET =
@@ -103,4 +95,4 @@ main :: IO ()
main =
do let f = return "No device specified"
runMonitor netConfig f runNet
--} \ No newline at end of file
+-}
diff --git a/Monitors/Swap.hs b/Monitors/Swap.hs
index 7a69341..9fb6cc0 100644
--- a/Monitors/Swap.hs
+++ b/Monitors/Swap.hs
@@ -16,22 +16,15 @@ module Monitors.Swap where
import Monitors.Common
-import Data.IORef
import qualified Data.ByteString.Lazy.Char8 as B
swapConfig :: IO MConfig
-swapConfig =
- do lc <- newIORef "#BFBFBF"
- l <- newIORef 30
- nc <- newIORef "#00FF00"
- h <- newIORef 75
- hc <- newIORef "#FF0000"
- t <- newIORef "Swap: <usedratio>%"
- p <- newIORef package
- u <- newIORef ""
- a <- newIORef []
- e <- newIORef ["total", "used", "free", "usedratio"]
- return $ MC nc l lc h hc t p u a e
+swapConfig = newConfig
+ "Swap: <usedratio>" -- template
+ package -- package
+ "" -- usage tail?
+ [] -- added args
+ ["total", "used", "free", "usedratio"] -- available replacements
fileMEM :: IO B.ByteString
fileMEM = B.readFile "/proc/meminfo"
@@ -63,4 +56,4 @@ main :: IO ()
main =
do let af = runSwap []
runMonitor swapConfig af runSwap
--} \ No newline at end of file
+-}
diff --git a/Monitors/Weather.hs b/Monitors/Weather.hs
index 63eb48e..885a9e2 100644
--- a/Monitors/Weather.hs
+++ b/Monitors/Weather.hs
@@ -16,8 +16,6 @@ module Monitors.Weather where
import Monitors.Common
-import Data.IORef
-
import System.Process
import System.Exit
import System.IO
@@ -26,32 +24,26 @@ import Text.ParserCombinators.Parsec
weatherConfig :: IO MConfig
-weatherConfig =
- do lc <- newIORef "#BFBFBF"
- l <- newIORef 15
- nc <- newIORef "#00FF00"
- h <- newIORef 27
- hc <- newIORef "#FF0000"
- t <- newIORef "<station>: <tempC>C, rh <rh>% (<hour>)"
- p <- newIORef package
- u <- newIORef "station ID"
- a <- newIORef []
- e <- newIORef ["station"
- , "stationState"
- , "year"
- , "month"
- , "day"
- , "hour"
- , "wind"
- , "visibility"
- , "skyCondition"
- , "tempC"
- , "tempF"
- , "dewPoint"
- , "rh"
- ,"pressure"
- ]
- return $ MC nc l lc h hc t p u a e
+weatherConfig = newConfig
+ "<station>: <tempC>C, rh <rh>% (<hour>)" -- template
+ package -- package
+ "station ID" -- usage tail?
+ [] -- added args
+ ["station" -- available replacements
+ , "stationState"
+ , "year"
+ , "month"
+ , "day"
+ , "hour"
+ , "wind"
+ , "visibility"
+ , "skyCondition"
+ , "tempC"
+ , "tempF"
+ , "dewPoint"
+ , "rh"
+ ,"pressure"
+ ]
data WeatherInfo =
WI { stationPlace :: String
@@ -149,4 +141,4 @@ main :: IO ()
main =
do let af = return "No station ID specified"
runMonitor weatherConfig af runWeather
--} \ No newline at end of file
+-}