{-# LANGUAGE OverloadedStrings #-}
module Main where
import Common
import Data.Text (pack, strip, unpack)
import Turtle
main :: IO ()
main = sh $ do
liftIO . putStrLn =<< cpuUsage
maybe (return ExitSuccess) handleButton =<< currentButton
cpuUsage :: Shell String
cpuUsage = format' <$> idleCpu
where format' idle =
let usage = formatFloatN (100 - idle) 0
in "\61668 " ++ usage ++ "%"
handleButton :: MonadIO io => Button -> io ExitCode
handleButton LeftClick = shell "urxvt -title pop-up -e htop" empty
handleButton _ = return ExitSuccess
idleCpu :: Shell Double
idleCpu = read . unpack . strip <$>
strict (inshell (pack "mpstat 1 1 -o JSON | jq -r '.sysstat.hosts[0].statistics[0].\"cpu-load\"[0].idle'") empty)