summaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
authorjao <jao@gnu.org>2022-04-18 18:55:04 +0100
committerjao <jao@gnu.org>2022-04-18 18:55:04 +0100
commit552d6f8baa1048ddb5fd22269efd50b90303ca4d (patch)
treef3cd4fdf5facd76633abb99607aa438b4172def2 /src
parent082ef98c1c265ad927b728402d8803a86bbbaeef (diff)
downloadxmobar-552d6f8baa1048ddb5fd22269efd50b90303ca4d.tar.gz
xmobar-552d6f8baa1048ddb5fd22269efd50b90303ca4d.tar.bz2
CpuFreq: new template parameters max, min and avg.
Fixes #166.
Diffstat (limited to 'src')
-rw-r--r--src/Xmobar/Plugins/Monitors/Common/Files.hs9
-rw-r--r--src/Xmobar/Plugins/Monitors/CpuFreq.hs11
2 files changed, 15 insertions, 5 deletions
diff --git a/src/Xmobar/Plugins/Monitors/Common/Files.hs b/src/Xmobar/Plugins/Monitors/Common/Files.hs
index b08fe6c..9f28d6b 100644
--- a/src/Xmobar/Plugins/Monitors/Common/Files.hs
+++ b/src/Xmobar/Plugins/Monitors/Common/Files.hs
@@ -14,7 +14,9 @@
--
-----------------------------------------------------------------------------
-module Xmobar.Plugins.Monitors.Common.Files (checkedDataRetrieval) where
+module Xmobar.Plugins.Monitors.Common.Files ( checkedDataRetrieval
+ , checkedDataRead)
+where
#if __GLASGOW_HASKELL__ < 800
import Control.Applicative
@@ -49,6 +51,11 @@ retrieveData path lbl trans fmt = do
=<< mapM (showWithColors fmt . trans . read) pairs
)
+checkedDataRead :: [[String]] -> Monitor [Double]
+checkedDataRead paths = concat <$> mapM readData paths
+ where readData path = map (read . snd) . sortBy (compare `on` fst) <$>
+ (mapM readFiles =<< findFilesAndLabel path Nothing)
+
-- | Represents the different types of path components
data Comp = Fix String
| Var [String]
diff --git a/src/Xmobar/Plugins/Monitors/CpuFreq.hs b/src/Xmobar/Plugins/Monitors/CpuFreq.hs
index 9274cd7..d8a4319 100644
--- a/src/Xmobar/Plugins/Monitors/CpuFreq.hs
+++ b/src/Xmobar/Plugins/Monitors/CpuFreq.hs
@@ -22,7 +22,8 @@ import Xmobar.Plugins.Monitors.Common
-- get more cpu frequencies.
cpuFreqConfig :: IO MConfig
cpuFreqConfig =
- mkMConfig "Freq: <cpu0>" (map ((++) "cpu" . show) [0 :: Int ..])
+ mkMConfig "Freq: <cpu0>"
+ (["max", "min", "avg"] ++ map ((++) "cpu" . show) [0 :: Int ..])
-- |
@@ -32,12 +33,14 @@ runCpuFreq :: [String] -> Monitor String
runCpuFreq _ = do
suffix <- getConfigValue useSuffix
ddigits <- getConfigValue decDigits
- let path = ["/sys/devices/system/cpu/cpu", "/cpufreq/scaling_cur_freq"]
+ let paths = ["/sys/devices/system/cpu/cpu", "/cpufreq/scaling_cur_freq"]
divisor = 1e6 :: Double
fmt x | x < 1 = if suffix then mhzFmt x ++ "MHz"
else ghzFmt x
| otherwise = ghzFmt x ++ if suffix then "GHz" else ""
mhzFmt x = show (round (x * 1000) :: Integer)
ghzFmt = showDigits ddigits
- failureMessage <- getConfigValue naString
- checkedDataRetrieval failureMessage [path] Nothing (/divisor) fmt
+ sts xs = [maximum xs, minimum xs, sum xs / fromIntegral (length xs)]
+ vs <- checkedDataRead [paths]
+ if null vs then getConfigValue naString
+ else mapM (showWithColors fmt . (/divisor)) (sts vs ++ vs) >>= parseTemplate