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