summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--Plugins/Monitors/CoreCommon.hs8
-rw-r--r--Plugins/Monitors/CoreTemp.hs8
-rw-r--r--Plugins/Monitors/CpuFreq.hs7
-rw-r--r--Plugins/Monitors/Thermal.hs4
-rw-r--r--README35
5 files changed, 60 insertions, 2 deletions
diff --git a/Plugins/Monitors/CoreCommon.hs b/Plugins/Monitors/CoreCommon.hs
index de737d4..9a19cd5 100644
--- a/Plugins/Monitors/CoreCommon.hs
+++ b/Plugins/Monitors/CoreCommon.hs
@@ -18,6 +18,10 @@ import Plugins.Monitors.Common
import System.Posix.Files (fileExist)
import System.Directory
+-- |
+-- Function checks the existence of first file specified by pattern and if the
+-- file doesn't exists failure message is shown, otherwise the data retrieval
+-- is performed.
checkedDataRetrieval :: String -> String -> String -> String -> Double -> Monitor String
checkedDataRetrieval failureMessage dir file pattern divisor = do
exists <- io $ fileExist $ foldl (++) dir ["/", pattern, "0/", file]
@@ -25,6 +29,10 @@ checkedDataRetrieval failureMessage dir file pattern divisor = do
False -> return failureMessage
True -> retrieveData dir file pattern divisor
+-- |
+-- Function retrieves data from files in directory dir specified by pattern.
+-- String values are converted to double and adjusted with divisor. Final array
+-- is processed by template parser function and returned as monitor string.
retrieveData :: String -> String -> String -> Double -> Monitor String
retrieveData dir file pattern divisor = do
count <- io $ dirCount dir pattern
diff --git a/Plugins/Monitors/CoreTemp.hs b/Plugins/Monitors/CoreTemp.hs
index e59f0d3..f014335 100644
--- a/Plugins/Monitors/CoreTemp.hs
+++ b/Plugins/Monitors/CoreTemp.hs
@@ -17,11 +17,19 @@ module Plugins.Monitors.CoreTemp where
import Plugins.Monitors.Common
import Plugins.Monitors.CoreCommon
+-- |
+-- Core temperature default configuration. Default template contains only one
+-- core temperature, user should specify custom template in order to get more
+-- core frequencies.
coreTempConfig :: IO MConfig
coreTempConfig = mkMConfig
"Temp: <core0>C" -- template
(zipWith (++) (repeat "core") (map show [0 :: Int ..])) -- available
-- replacements
+
+-- |
+-- Function retrieves monitor string holding the core temperature
+-- (or temperatures)
runCoreTemp :: [String] -> Monitor String
runCoreTemp _ = do
let dir = "/sys/bus/platform/devices"
diff --git a/Plugins/Monitors/CpuFreq.hs b/Plugins/Monitors/CpuFreq.hs
index 0258037..0bd99bb 100644
--- a/Plugins/Monitors/CpuFreq.hs
+++ b/Plugins/Monitors/CpuFreq.hs
@@ -17,11 +17,18 @@ module Plugins.Monitors.CpuFreq where
import Plugins.Monitors.Common
import Plugins.Monitors.CoreCommon
+-- |
+-- Cpu frequency default configuration. Default template contains only one
+-- core frequency, user should specify custom template in order to get more
+-- cpu frequencies.
cpuFreqConfig :: IO MConfig
cpuFreqConfig = mkMConfig
"Freq: <core0>GHz" -- template
(zipWith (++) (repeat "core") (map show [0 :: Int ..])) -- available
-- replacements
+
+-- |
+-- Function retrieves monitor string holding the cpu frequency (or frequencies)
runCpuFreq :: [String] -> Monitor String
runCpuFreq _ = do
let dir = "/sys/devices/system/cpu"
diff --git a/Plugins/Monitors/Thermal.hs b/Plugins/Monitors/Thermal.hs
index 4814aa5..a3ffe6d 100644
--- a/Plugins/Monitors/Thermal.hs
+++ b/Plugins/Monitors/Thermal.hs
@@ -18,11 +18,15 @@ import qualified Data.ByteString.Lazy.Char8 as B
import Plugins.Monitors.Common
import System.Posix.Files (fileExist)
+-- | Default thermal configuration.
thermalConfig :: IO MConfig
thermalConfig = mkMConfig
"Thm: <temp>C" -- template
["temp"] -- available replacements
+-- | Retrieves thermal information. Argument is name of thermal directory in
+-- \/proc\/acpi\/thermal_zone. Returns the monitor string parsed according to
+-- template (either default or user specified).
runThermal :: [String] -> Monitor String
runThermal args = do
let zone = head args
diff --git a/README b/README
index 06785e7..42924b3 100644
--- a/README
+++ b/README
@@ -197,8 +197,8 @@ External Commands). All other commands are provided by plugins.
[Xmobar] comes with some plugins, providing a set of system monitors,
a standard input reader, an Unix named pipe reader, and a configurable
date plugin. These plugins install the following internal commands:
-`Weather`, `Network`, `Memory`, `Swap`, `Cpu`, `Battery`, `Date`,
-`StdinReader`, and `PipeReader`.
+`Weather`, `Network`, `Memory`, `Swap`, `Cpu`, `Battery`, `Thermal`,
+`CpuFreq`, `CoreTemp`, `Date`, `StdinReader` and `PipeReader`.
To remove them see below Installing/Removing a Plugin
@@ -263,6 +263,37 @@ Monitors have default aliases.
`left`
- Default template: `Batt: <left>`
+`Thermal Zone Args RefreshRate`
+
+- aliases to the Zone: so `Zone "THRM" []` can be used in template as `%THRM%`
+- Args: the argument list (see below)
+- Variables that can be used with the `-t`/`--template` argument:
+ `temp`
+- Default template: `Thm: <temp>C`
+- This plugin works only on sytems with devices having thermal zone.
+ Check directories in /proc/acpi/thermal_zone for possible values.
+- Example: Run Thermal "THRM" ["-t","iwl4965-temp: \<temp\>C"]
+
+`CpuFreq Args RefreshRate`
+
+- aliases to `cpufreq`
+- Args: the argument list (see below)
+- Variables that can be used with the `-t`/`--template` argument:
+ `core0`, `core1`, .., `coreN`
+- Default template: `Freq: <core0>GHz`
+- This monitor requires acpi_cpufreq module to be loaded in kernel
+- Example: Run CpuFreq ["-t","Freq:\<core0\>|\<core1\>GHz","-L","0","-H","2","-l","lightblue","-n","white","-h","red"] 50
+
+`CoreTemp Args RefreshRate`
+
+- aliases to `coretemp`
+- Args: the argument list (see below)
+- Variables that can be used with the `-t`/`--template` argument:
+ `core0`, `core1`, .., `coreN`
+- Default template: `Temp: <core0>C`
+- This monitor requires coretemp module to be loaded in kernel
+- Example: Run CoreTemp ["-t","Temp:\<core0\>|\<core1\>C","-L","40","-H","60","-l","lightblue","-n","gray90","-h","red"] 50
+
### Monitor Plugins Commands Arguments
These are the arguments that can be used for internal commands in the