diff options
-rw-r--r-- | Plugins/Monitors/MultiCpu.hs | 24 | ||||
-rw-r--r-- | README | 8 |
2 files changed, 25 insertions, 7 deletions
diff --git a/Plugins/Monitors/MultiCpu.hs b/Plugins/Monitors/MultiCpu.hs index 069199b..17620d5 100644 --- a/Plugins/Monitors/MultiCpu.hs +++ b/Plugins/Monitors/MultiCpu.hs @@ -16,13 +16,15 @@ module Plugins.Monitors.MultiCpu(multiCpuConfig, runMultiCpu) where import Plugins.Monitors.Common import qualified Data.ByteString.Lazy.Char8 as B -import Data.List (isPrefixOf) +import Data.List (isPrefixOf,intersperse,transpose) multiCpuConfig :: IO MConfig multiCpuConfig = - mkMConfig "Cpu: <total>%" - [ k ++ n | n <- "" : map show [0 :: Int ..] - , k <- ["bar","total","user","nice","system","idle"]] + mkMConfig "Cpu: <total>%" $ + map ("auto" ++) monitors + ++ [ k ++ n | n <- "" : map show [0 :: Int ..] + , k <- monitors] + where monitors = ["bar","total","user","nice","system","idle"] cpuData :: IO [[Float]] @@ -59,8 +61,20 @@ formatCpu xs ps <- showPercentsWithColors (t:xs) return (b:ps) +splitEvery :: Int -> [a] -> [[a]] +splitEvery _ [] = [] +splitEvery n l = (take n l) : splitEvery n (drop n l) + +groupData :: [String] -> [[String]] +groupData = transpose . tail . splitEvery 6 + +formatAutoCpus :: [String] -> Monitor [String] +formatAutoCpus [] = return $ replicate 6 "" +formatAutoCpus xs = return $ map concat . map (intersperse " ") $ groupData xs + runMultiCpu :: [String] -> Monitor String runMultiCpu _ = do c <- io parseCpuData l <- formatMultiCpus c - parseTemplate l + a <- formatAutoCpus l + parseTemplate (a ++ l) @@ -374,8 +374,12 @@ Monitors have default aliases. - aliases to `multicpu` - Args: default monitor arguments (see below) - Variables that can be used with the `-t`/`--template` argument: - `total`, `bar`, `user`, `nice`, `system`, `idle`, - `total0`, `bar0`, `user0`, `nice0`, `system0`, `idle0`, ... + `autototal`, `autobar`, `autouser`, `autonice`, + `autosystem`, `autoidle`, `total`, `bar`, `user`, `nice`, + `system`, `idle`, `total0`, `bar0`, `user0`, `nice0`, + `system0`, `idle0`, ... +- The auto* variables automatically detect the number of CPUs on the system + and displays one entry for each. - Default template: `Cpu: <total>%` `Battery Args RefreshRate` |