batteryCapacityFile = "/sys/class/power_supply/BAT0/capacity" :: FilePath batteryStatusFile = "/sys/class/power_supply/BAT0/status" :: FilePath main :: IO () main = do batteryCapacity <- readFile batteryCapacityFile batteryStatus <- readFile batteryStatusFile putStrLn $ formatInfo batteryStatus batteryCapacity formatInfo :: String -> String -> String formatInfo status capacity = icon ++ " " ++ init capacity ++ "%" where icon | init status == "Full" = "🙂" | init status == "Charging" = "🔋" | init status == "Not charging" = "â™ģ" | init status == "Unknown" = "Unknown" | read capacity <= 20 = "đŸĒĢ" | read capacity <= 100 = "🙃" | otherwise = "Silly"