20 lines
765 B
Haskell
20 lines
765 B
Haskell
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"
|