taffybar-0.2.1: src/System/Taffybar/FSMonitor.hs
module System.Taffybar.FSMonitor where
import Graphics.UI.Gtk
import System.Process (readProcess)
import System.Taffybar.Widgets.PollingLabel
import Text.Printf (printf)
fsMonitorNew :: Double -> [String] -> IO Widget
fsMonitorNew interval fsList = do
label <- pollingLabelNew "" interval $ showFSInfo fsList
widgetShowAll label
return $ toWidget label
where
showFSInfo :: [String] -> IO String
showFSInfo fsDict = do
fsOut <- readProcess "df" (["-kP"] ++ fsList) ""
let fss = map ((take 2) . reverse . words) $ drop 1 $ lines fsOut
return $ unwords $ map ((\s -> "[" ++ s ++ "]") . unwords) fss