diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/Xmobar/Plugins/Monitors/CoreTemp.hs | 32 | 
1 files changed, 17 insertions, 15 deletions
| diff --git a/src/Xmobar/Plugins/Monitors/CoreTemp.hs b/src/Xmobar/Plugins/Monitors/CoreTemp.hs index 65eabe0..18efa98 100644 --- a/src/Xmobar/Plugins/Monitors/CoreTemp.hs +++ b/src/Xmobar/Plugins/Monitors/CoreTemp.hs @@ -18,7 +18,9 @@ module Xmobar.Plugins.Monitors.CoreTemp (startCoreTemp) where  import Xmobar.Plugins.Monitors.Common  import Control.Monad (filterM)  import System.Console.GetOpt -import System.Directory (doesDirectoryExist) +import System.Directory ( doesDirectoryExist +                        , doesFileExist +                        )  -- | Declare Options.  data CTOpts = CTOpts { loadIconPattern :: Maybe IconPattern @@ -70,26 +72,31 @@ coretempPath :: IO String  coretempPath = do xs <- filterM doesDirectoryExist ps                    let x = head xs                    return x -  where ps = [ "/sys/bus/platform/devices/coretemp." ++ (show (x :: Int)) | x <- [0..9] ] +  where ps = [ "/sys/bus/platform/devices/coretemp." ++ (show (x :: Int)) ++ "/" | x <- [0..9] ]  hwmonPath :: IO String  hwmonPath = do p <- coretempPath -               xs <- filterM doesDirectoryExist [ p ++ "/hwmon/hwmon" ++ show (x :: Int) | x <- [0..9] ] +               xs <- filterM doesDirectoryExist [ p ++ "hwmon/hwmon" ++ show (x :: Int) ++ "/" | x <- [0..9] ]                 let x = head xs                 return x  corePaths :: IO [String]  corePaths = do p <- hwmonPath -               return [ p ] +               ls <- filterM doesFileExist [ p ++ "temp" ++ show (x :: Int) ++ "_label" | x <- [0..9] ] +               cls <- filterM isLabelFromCore ls +               return $ map labelToCore cls -cTFilePaths = [ "/sys/bus/platform/devices/coretemp.0/hwmon/hwmon1/temp2_input" -              , "/sys/bus/platform/devices/coretemp.0/hwmon/hwmon1/temp3_input" -              , "/sys/bus/platform/devices/coretemp.0/hwmon/hwmon1/temp4_input" -              , "/sys/bus/platform/devices/coretemp.0/hwmon/hwmon1/temp5_input" -              ] +isLabelFromCore :: FilePath -> IO Bool +isLabelFromCore p = do a <- readFile p +                       return $ take 4 a == "Core" + +labelToCore :: FilePath -> FilePath +labelToCore = (++ "input") . reverse . drop 5 . reverse  cTData :: IO [Float] -cTData = traverse readSingleFile cTFilePaths +cTData = do fps <- corePaths +            fs <- traverse readSingleFile fps +            return fs    where readSingleFile :: FilePath -> IO Float          readSingleFile s = do a <- readFile s                                return $ parseContent a @@ -137,8 +144,3 @@ runCT argv = do cTs <- io $ parseCT  startCoreTemp :: [String] -> Int -> (String -> IO ()) -> IO ()  startCoreTemp a = runM a cTConfig runCT - ---- - ---showTemps :: [Float] -> Monitor [String] ---showTemps fs = do fstrs <- mapM  | 
