{-# LANGUAGE OverloadedStrings #-} module Main where import Data.Text (strip, pack) import Data.Text.IO (putStrLn) import Prelude hiding (putStrLn) import Turtle import System.Environment (getArgs) import Data.Maybe main :: IO () main = do icons <- getArgs sh $ liftIO . putStrLn . formatBlock icons =<< cpuTemperature formatBlock :: [String] -> Text -> Text formatBlock icons temp = let icon = fromMaybe "" $ getIcon icons in icon <> temp <> "°C" getIcon :: [String] -> Maybe Text getIcon icons = case icons of icon : _ -> Just $ pack icon _ -> Nothing cpuTemperature :: Shell Text cpuTemperature = strip <$> strict (inshell "sensors | grep -oP 'Package[^\\+]*\\+\\K[0-9]+'" mempty)