diff options
author | Andrea Rossato <andrea.rossato@ing.unitn.it> | 2007-07-18 17:12:11 +0200 |
---|---|---|
committer | Andrea Rossato <andrea.rossato@ing.unitn.it> | 2007-07-18 17:12:11 +0200 |
commit | a8653d8712c2d218adf3f70cef7e511060bed695 (patch) | |
tree | b463eaa897d30c41163d0e5fbee89aa946980e7f /Plugins/Monitors/Mem.hs | |
parent | 7235e59441c94580e99d50774629579fe54c6b1a (diff) | |
download | xmobar-a8653d8712c2d218adf3f70cef7e511060bed695.tar.gz xmobar-a8653d8712c2d218adf3f70cef7e511060bed695.tar.bz2 |
Monitors are now a Plugin that can be removed from Config.hs
darcs-hash:20070718151211-d6583-7e0e49c22d07feda72d03370fd592c196dfcc9c1.gz
Diffstat (limited to 'Plugins/Monitors/Mem.hs')
-rw-r--r-- | Plugins/Monitors/Mem.hs | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/Plugins/Monitors/Mem.hs b/Plugins/Monitors/Mem.hs new file mode 100644 index 0000000..56639f2 --- /dev/null +++ b/Plugins/Monitors/Mem.hs @@ -0,0 +1,47 @@ +----------------------------------------------------------------------------- +-- | +-- Module : Plugins.Monitors.Mem +-- Copyright : (c) Andrea Rossato +-- License : BSD-style (see LICENSE) +-- +-- Maintainer : Andrea Rossato <andrea.rossato@unibz.it> +-- Stability : unstable +-- Portability : unportable +-- +-- A memory monitor for Xmobar +-- +----------------------------------------------------------------------------- + +module Plugins.Monitors.Mem where + +import Plugins.Monitors.Common + +memConfig :: IO MConfig +memConfig = mkMConfig + "Mem: <usedratio>% (<cache>M)" -- template + ["total", "free", "buffer", -- available replacements + "cache", "rest", "used", "usedratio"] + +fileMEM :: IO String +fileMEM = readFile "/proc/meminfo" + +parseMEM :: IO [Float] +parseMEM = + do file <- fileMEM + 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 + return [total, free, buffer, cache, rest, used, usedratio] + +formatMem :: [Float] -> Monitor [String] +formatMem x = + do let f n = show (takeDigits 2 n) + mapM (showWithColors f) x + +runMem :: [String] -> Monitor String +runMem _ = + do m <- io $ parseMEM + l <- formatMem m + parseTemplate l |