diff options
| author | jao <jao@gnu.org> | 2018-11-21 23:51:41 +0000 | 
|---|---|---|
| committer | jao <jao@gnu.org> | 2018-11-21 23:51:41 +0000 | 
| commit | 50134d5b5c4baabdfb35c0aeb8bf53d29f009c4d (patch) | |
| tree | a710ee9a8e9ea9e46951d371af29081e1c72f502 /src/lib/Xmobar/Plugins/Monitors/CpuFreq.hs | |
| parent | 7674145b878fd315999558075edcfc5e09bdd91c (diff) | |
| download | xmobar-50134d5b5c4baabdfb35c0aeb8bf53d29f009c4d.tar.gz xmobar-50134d5b5c4baabdfb35c0aeb8bf53d29f009c4d.tar.bz2 | |
All sources moved inside src
Diffstat (limited to 'src/lib/Xmobar/Plugins/Monitors/CpuFreq.hs')
| -rw-r--r-- | src/lib/Xmobar/Plugins/Monitors/CpuFreq.hs | 44 | 
1 files changed, 44 insertions, 0 deletions
| diff --git a/src/lib/Xmobar/Plugins/Monitors/CpuFreq.hs b/src/lib/Xmobar/Plugins/Monitors/CpuFreq.hs new file mode 100644 index 0000000..1afedfa --- /dev/null +++ b/src/lib/Xmobar/Plugins/Monitors/CpuFreq.hs @@ -0,0 +1,44 @@ +----------------------------------------------------------------------------- +-- | +-- Module      :  Plugins.Monitors.CpuFreq +-- Copyright   :  (c) Juraj Hercek +-- License     :  BSD-style (see LICENSE) +-- +-- Maintainer  :  Juraj Hercek <juhe_haskell@hck.sk> +-- Stability   :  unstable +-- Portability :  unportable +-- +-- A cpu frequency monitor for Xmobar +-- +----------------------------------------------------------------------------- + +module Xmobar.Plugins.Monitors.CpuFreq where + +import Xmobar.Plugins.Monitors.Common +import Xmobar.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: <cpu0>" (map ((++) "cpu" . show) [0 :: Int ..]) + + +-- | +-- Function retrieves monitor string holding the cpu frequency (or +-- frequencies) +runCpuFreq :: [String] -> Monitor String +runCpuFreq _ = do +  suffix <- getConfigValue useSuffix +  ddigits <- getConfigValue decDigits +  let path = ["/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 | 
