From 7e5a4a57cd915322b3e563f9c245369a424dd8cb Mon Sep 17 00:00:00 2001 From: ndwarshuis Date: Sun, 21 Nov 2021 18:18:09 -0500 Subject: [PATCH] REF use function to abstract dbus endpoint dependencies --- lib/XMonad/Internal/DBus/Brightness/Common.hs | 16 ++++++++------- lib/XMonad/Internal/DBus/Screensaver.hs | 20 ++++++++++--------- lib/XMonad/Internal/Dependency.hs | 14 +++++++++++++ 3 files changed, 34 insertions(+), 16 deletions(-) diff --git a/lib/XMonad/Internal/DBus/Brightness/Common.hs b/lib/XMonad/Internal/DBus/Brightness/Common.hs index 48d2c4a..d8f45f4 100644 --- a/lib/XMonad/Internal/DBus/Brightness/Common.hs +++ b/lib/XMonad/Internal/DBus/Brightness/Common.hs @@ -11,7 +11,7 @@ module XMonad.Internal.DBus.Brightness.Common , signalDep ) where -import Control.Monad (void) +-- import Control.Monad (void) import Data.Int (Int32) @@ -133,12 +133,14 @@ emitBrightness BrightnessConfig{ bcPath = p, bcInterface = i } client cur = callBacklight :: Client -> BrightnessConfig a b -> String -> MemberName -> FeatureIO callBacklight client BrightnessConfig { bcPath = p, bcInterface = i, bcName = n } controlName m = - Feature - { ftrMaybeAction = void $ callMethod client xmonadBusName p i m - , ftrName = unwords [n, controlName] - , ftrWarning = Default - , ftrChildren = [xDbusDep p i $ Method_ m] - } + (featureEndpoint xmonadBusName p i m client) + { ftrName = unwords [n, controlName] } + -- Feature + -- { ftrMaybeAction = void $ callMethod client xmonadBusName p i m + -- , ftrName = unwords [n, controlName] + -- , ftrWarning = Default + -- , ftrChildren = [xDbusDep p i $ Method_ m] + -- } bodyGetBrightness :: Num a => [Variant] -> Maybe a bodyGetBrightness [b] = fromIntegral <$> (fromVariant b :: Maybe Int32) diff --git a/lib/XMonad/Internal/DBus/Screensaver.hs b/lib/XMonad/Internal/DBus/Screensaver.hs index 5d6371c..00893a3 100644 --- a/lib/XMonad/Internal/DBus/Screensaver.hs +++ b/lib/XMonad/Internal/DBus/Screensaver.hs @@ -121,19 +121,21 @@ exportScreensaver client = Feature } callToggle :: Client -> FeatureIO -callToggle client = Feature - { ftrMaybeAction = cmd - , ftrName = "screensaver toggle" - , ftrWarning = Default - , ftrChildren = [xDbusDep ssPath interface $ Method_ memToggle] - } - where - cmd = void $ callMethod client xmonadBusName ssPath interface memToggle +callToggle client = + (featureEndpoint xmonadBusName ssPath interface memToggle client) + { ftrName = "screensaver toggle" } +-- callToggle client = Feature +-- { ftrMaybeAction = cmd +-- , ftrName = "screensaver toggle" +-- , ftrWarning = Default +-- , ftrChildren = [xDbusDep ssPath interface $ Method_ memToggle] +-- } +-- where +-- cmd = void $ callMethod client xmonadBusName ssPath interface memToggle callQuery :: Client -> IO (Maybe SSState) callQuery client = do reply <- callMethod client xmonadBusName ssPath interface memQuery - -- return $ reply >>= bodyGetCurrentState return $ either (const Nothing) bodyGetCurrentState reply matchSignal :: (Maybe SSState -> IO ()) -> IO SignalHandler diff --git a/lib/XMonad/Internal/Dependency.hs b/lib/XMonad/Internal/Dependency.hs index 7311259..25d4048 100644 --- a/lib/XMonad/Internal/Dependency.hs +++ b/lib/XMonad/Internal/Dependency.hs @@ -23,6 +23,7 @@ module XMonad.Internal.Dependency , featureDefault , featureExeArgs , featureExe + , featureEndpoint , warnMissing , whenSatisfied , ifSatisfied @@ -33,6 +34,7 @@ module XMonad.Internal.Dependency , callMethod ) where +import Control.Monad (void) import Control.Monad.IO.Class import Data.Bifunctor (bimap) @@ -102,6 +104,18 @@ featureExeArgs :: MonadIO m => String -> String -> [String] -> Feature (m ()) featureExeArgs n cmd args = featureDefault n [Executable cmd] $ spawnCmd cmd args +-- TODO the bus and client might refer to different things +featureEndpoint :: BusName -> ObjectPath -> InterfaceName -> MemberName + -> Client -> FeatureIO +featureEndpoint busname path iface mem client = Feature + { ftrMaybeAction = cmd + , ftrName = "screensaver toggle" + , ftrWarning = Default + , ftrChildren = [DBusEndpoint (Bus False busname) $ Endpoint path iface $ Method_ mem] + } + where + cmd = void $ callMethod client busname path iface mem + -------------------------------------------------------------------------------- -- | Feature evaluation --