    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