packages feed

i3blocks-hs-contrib-2.0.0: Temperature/Main.hs

{-# 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)