pythia-0.1: A utility program for retrieving system information.
Safe HaskellSafe-Inferred
LanguageHaskell2010

Pythia.Services.Battery.UPower

Contents

Description

This module provides functionality for retrieving battery information using UPower.

Since: 0.1

Synopsis

Query

batteryShellApp :: (MonadPathReader m, MonadThrow m, MonadTypedProcess m) => m Battery Source #

UPower query for Battery.

Since: 0.1

supported :: MonadPathReader m => m Bool Source #

Returns a boolean determining if this program is supported on the current system.

Since: 0.1

Misc

data UPowerParseError Source #

Errors that can occur with upower.

Examples

Expand
>>> displayException $ UPowerParseErrorPercentage "output"
"No percentage found in upower output: output"
>>> displayException $ UPowerParseErrorStatus "output"
"No status found in upower output: output"

Since: 0.1

Constructors

UPowerParseErrorPercentage Text

Did not find percentage.

Since: 0.1

UPowerParseErrorStatus Text

Did not find status.

Since: 0.1

parseBattery :: Text -> Either UPowerParseError Battery Source #

Attempts to parse the output of UPower.

Examples

Expand
>>> parseBattery "state: fully-charged\npercentage: 100%"
Right (MkBattery {percentage = MkPercentage {unPercentage = UnsafeLRInterval 100}, status = Full})
>>> parseBattery "state: discharging\npercentage: 70%"
Right (MkBattery {percentage = MkPercentage {unPercentage = UnsafeLRInterval 70}, status = Discharging})
>>> parseBattery "state: charging\npercentage: 40%"
Right (MkBattery {percentage = MkPercentage {unPercentage = UnsafeLRInterval 40}, status = Charging})
>>> parseBattery "state: pending-charge\npercentage: 40%"
Right (MkBattery {percentage = MkPercentage {unPercentage = UnsafeLRInterval 40}, status = Pending})
>>> parseBattery "state: bad\npercentage: 40%"
Left (UPowerParseErrorStatus "state: bad\npercentage: 40%")
>>> parseBattery "state: fully-charged"
Left (UPowerParseErrorPercentage "state: fully-charged")
>>> parseBattery "percentage: 80%"
Left (UPowerParseErrorStatus "percentage: 80%")
>>> parseBattery "nothing"
Left (UPowerParseErrorStatus "nothing")

Since: 0.1