diff options
| -rwxr-xr-x | monitor.hs | 70 | 
1 files changed, 0 insertions, 70 deletions
| diff --git a/monitor.hs b/monitor.hs deleted file mode 100755 index 7705bc6..0000000 --- a/monitor.hs +++ /dev/null @@ -1,70 +0,0 @@ -#! /usr/bin/env runhaskell - - -import Data.Time (getZonedTime) -import Text.Printf (printf) -import System.Process (runInteractiveCommand) -import Data.List -import System.IO (hGetContents) - - -getOutput :: String -> IO String -getOutput cmd = do -    (_, out, _, _) <- runInteractiveCommand cmd -    hGetContents out  - -memParse :: String -> String -memParse file =  -    let content = map words $ take 4 $ lines file -        [total, free, buffer, cache] = map (\line -> (read $ line !! 1 :: Float) / 1024) content -        rest = free + buffer + cache -        used = total - rest -        usedratio = used * 100 / total -        realused = if usedratio > 50 then "^#FF0000"++show used++"^#FFFFFF" -                   else "^#FF00FF"++show used++"^#FFFFFF" -    in -        printf "MEM: %sM %.1f%% used   %.0fM rest" realused usedratio rest - - -mem :: IO String -mem = do -    file <- readFile "/proc/meminfo" -    return $ memParse file - - -time :: IO String -time = do -    now <- getZonedTime -    return $ take 16 $ show now - - -temp :: IO String -temp = do -    file <- readFile "/proc/acpi/thermal_zone/THRM/temperature" -    let t = (words file) !! 1 -        f t | read t > 60 = "^#FF0000"++t++"^#FFFFFF" -            | otherwise = "^#00FF00"++t++"^#FFFFFF" -    return $ "TEMP: " ++ (f t) ++ "C" - - -takeTail :: Int -> [a] -> [a] -takeTail n xs = -    let len = length xs in -        drop (len-n) xs - - -load :: IO String -load = do -    content <- getOutput "uptime" -    let l = map (delete ',') $ takeTail 3 $ words content -    return $ unwords $ "LOAD:" : l - - -sep :: IO String -sep = return "        " - - -main = do  -    putStr "" -    mapM_ (>>=putStr) $ intersperse sep [load, temp, mem, time] -    putChar '\n'
\ No newline at end of file | 
