{-# LANGUAGE TemplateHaskell #-} {-# LANGUAGE OverloadedStrings #-} module System.Taffybar.DBus.Client.Params where import DBus import DBus.Generation import Language.Haskell.TH import System.Taffybar.DBus.Client.Util playerGenerationParams :: GenerationParams playerGenerationParams = defaultGenerationParams { genTakeSignalErrorHandler = True , genObjectPath = Just "/org/mpris/MediaPlayer2" } -- | The base object path for the UPower interface uPowerBaseObjectPath :: ObjectPath uPowerBaseObjectPath = "/org/freedesktop/UPower" -- | The name of the power daemon bus uPowerBusName :: BusName uPowerBusName = "org.freedesktop.UPower" uPowerDeviceInterfaceName :: InterfaceName uPowerDeviceInterfaceName = "org.freedesktop.UPower.Device" uPowerGenerationParams :: GenerationParams uPowerGenerationParams = defaultGenerationParams { genTakeSignalErrorHandler = True , genBusName = Just uPowerBusName } data BatteryType = BatteryTypeUnknown | BatteryTypeLinePower | BatteryTypeBatteryType | BatteryTypeUps | BatteryTypeMonitor | BatteryTypeMouse | BatteryTypeKeyboard | BatteryTypePda | BatteryTypePhone deriving (Show, Ord, Eq, Enum) data BatteryState = BatteryStateUnknown | BatteryStateCharging | BatteryStateDischarging | BatteryStateEmpty | BatteryStateFullyCharged | BatteryStatePendingCharge | BatteryStatePendingDischarge deriving (Show, Ord, Eq, Enum) data BatteryTechnology = BatteryTechnologyUnknown | BatteryTechnologyLithiumIon | BatteryTechnologyLithiumPolymer | BatteryTechnologyLithiumIronPhosphate | BatteryTechnologyLeadAcid | BatteryTechnologyNickelCadmium | BatteryTechnologyNickelMetalHydride deriving (Show, Ord, Eq, Enum) batteryTypeForName :: GetTypeForName batteryTypeForName name = const $ case name of "Type" -> yes ''BatteryType "State" -> yes ''BatteryState "Technology" -> yes ''BatteryTechnology _ -> Nothing where yes = Just . ConT