module Blucontrol.Main ( blucontrol , BlucontrolConstraints , ConfigControl (..) ) where import Control.Monad.Trans.Control import Blucontrol.Main.Control import Blucontrol.Main.CLI import Blucontrol.Control import Blucontrol.Gamma import Blucontrol.Recolor type BlucontrolConstraints m g r = ( ControlConstraint m (StM g (StM r ())) , MonadControl m , MonadBaseControl IO g , MonadBaseControl IO r , MonadGamma g , MonadRecolor r ) blucontrol :: BlucontrolConstraints m g r => ConfigControl m g r -> IO () blucontrol :: ConfigControl m g r -> IO () blucontrol ConfigControl m g r c = do IO () launch ConfigControl m g r -> forall a. m a -> IO a forall (m :: * -> *) (g :: * -> *) (r :: * -> *). ConfigControl m g r -> forall a. m a -> IO a runControl ConfigControl m g r c (m () -> IO ()) -> m () -> IO () forall a b. (a -> b) -> a -> b $ (forall a. g a -> IO (StM g a)) -> (forall a. r a -> IO (StM r a)) -> (GammaValue g -> RecolorValue r) -> m () forall (m :: * -> *) (g :: * -> *) (r :: * -> *). (ControlConstraint m (StM g (StM r ())), MonadBaseControl IO g, MonadBaseControl IO r, MonadControl m, MonadGamma g, MonadRecolor r) => (forall a. g a -> IO (StM g a)) -> (forall a. r a -> IO (StM r a)) -> (GammaValue g -> RecolorValue r) -> m () loopRecolor (ConfigControl m g r -> forall a. g a -> IO (StM g a) forall (m :: * -> *) (g :: * -> *) (r :: * -> *). ConfigControl m g r -> forall a. g a -> IO (StM g a) runGamma ConfigControl m g r c) (ConfigControl m g r -> forall a. r a -> IO (StM r a) forall (m :: * -> *) (g :: * -> *) (r :: * -> *). ConfigControl m g r -> forall a. r a -> IO (StM r a) runRecolor ConfigControl m g r c) (ConfigControl m g r -> GammaValue g -> RecolorValue r forall (m :: * -> *) (g :: * -> *) (r :: * -> *). ConfigControl m g r -> GammaValue g -> RecolorValue r coerceValue ConfigControl m g r c) data ConfigControl m g r = ConfigControl { ConfigControl m g r -> forall a. m a -> IO a runControl :: forall a. m a -> IO a , ConfigControl m g r -> forall a. g a -> IO (StM g a) runGamma :: forall a. g a -> IO (StM g a) , ConfigControl m g r -> forall a. r a -> IO (StM r a) runRecolor :: forall a. r a -> IO (StM r a) , ConfigControl m g r -> GammaValue g -> RecolorValue r coerceValue :: GammaValue g -> RecolorValue r }