taffybar-0.2.1: src/System/Taffybar/NetMonitor.hs
module System.Taffybar.NetMonitor where
import Graphics.UI.Gtk
import System.Information.Network (getNetInfo)
import System.Information.StreamInfo (getTransfer)
import System.Taffybar.Widgets.PollingLabel
import Text.Printf (printf)
netMonitorNew :: Double -> String -> IO Widget
netMonitorNew interval interface = do
label <- pollingLabelNew "" interval $ showNetInfo interface
widgetShowAll label
return $ toWidget label
where
showNetInfo :: String -> IO String
showNetInfo interface = do
trans <- getTransfer 0.3 $ getNetInfo interface
let [incoming, outgoing] = map (/1e3) trans
return $ printf "▼ %.2fkb/s ▲ %.2fkb/s" incoming outgoing