module System.Taffybar.DBus
  ( module System.Taffybar.DBus.Toggle
  , appendHook
  , startTaffyLogServer
  , withLogServer
  , withToggleServer
  ) where

import Control.Monad.Trans.Class
import Control.Monad.Trans.Reader
import System.Log.DBus.Server
import System.Taffybar.Context
import System.Taffybar.DBus.Toggle

startTaffyLogServer :: TaffyIO ()
startTaffyLogServer :: TaffyIO ()
startTaffyLogServer =
  (Context -> Client) -> ReaderT Context IO Client
forall (m :: * -> *) r a. Monad m => (r -> a) -> ReaderT r m a
asks Context -> Client
sessionDBusClient ReaderT Context IO Client -> (Client -> TaffyIO ()) -> TaffyIO ()
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= IO () -> TaffyIO ()
forall (t :: (* -> *) -> * -> *) (m :: * -> *) a.
(MonadTrans t, Monad m) =>
m a -> t m a
lift (IO () -> TaffyIO ()) -> (Client -> IO ()) -> Client -> TaffyIO ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Client -> IO ()
startLogServer

withLogServer :: TaffybarConfig -> TaffybarConfig
withLogServer :: TaffybarConfig -> TaffybarConfig
withLogServer = TaffyIO () -> TaffybarConfig -> TaffybarConfig
appendHook TaffyIO ()
startTaffyLogServer

withToggleServer :: TaffybarConfig -> TaffybarConfig
withToggleServer :: TaffybarConfig -> TaffybarConfig
withToggleServer = TaffybarConfig -> TaffybarConfig
handleDBusToggles