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 |