From 39bd464ca1e5cc8e7231eedf3caf9a643882bac8 Mon Sep 17 00:00:00 2001 From: ndwarshuis Date: Sat, 31 Dec 2022 20:23:27 -0500 Subject: [PATCH] ENH generalize screensaver --- lib/XMonad/Internal/DBus/Screensaver.hs | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/lib/XMonad/Internal/DBus/Screensaver.hs b/lib/XMonad/Internal/DBus/Screensaver.hs index 46ea1ca..59cda53 100644 --- a/lib/XMonad/Internal/DBus/Screensaver.hs +++ b/lib/XMonad/Internal/DBus/Screensaver.hs @@ -82,8 +82,9 @@ ruleCurrentState = , matchMember = Just memState } -emitState :: Client -> SSState -> IO () -emitState client sss = emit client $ sigCurrentState {signalBody = [toVariant sss]} +emitState :: MonadUnliftIO m => Client -> SSState -> m () +emitState client sss = + liftIO $ emit client $ sigCurrentState {signalBody = [toVariant sss]} bodyGetCurrentState :: [Variant] -> Maybe SSState bodyGetCurrentState [b] = fromVariant b :: Maybe SSState @@ -105,7 +106,7 @@ exportScreensaver ses = defaultInterface { interfaceName = interface , interfaceMethods = - [ autoMethod memToggle $ emitState cl' =<< toggle + [ autoMethod memToggle $ run $ emitState cl' =<< toggle , autoMethod memQuery (run query) ] , interfaceSignals = [sig] @@ -134,12 +135,12 @@ callToggle = interface memToggle -callQuery :: SesClient -> IO (Maybe SSState) +callQuery :: MonadUnliftIO m => SesClient -> m (Maybe SSState) callQuery ses = do reply <- callMethod ses xmonadBusName ssPath interface memQuery return $ either (const Nothing) bodyGetCurrentState reply -matchSignal :: (Maybe SSState -> IO ()) -> SesClient -> IO () +matchSignal :: MonadUnliftIO m => (Maybe SSState -> m ()) -> SesClient -> m () matchSignal cb ses = void $ addMatchCallback