diff options
Diffstat (limited to 'Utility')
-rw-r--r-- | Utility/DBus.hs | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/Utility/DBus.hs b/Utility/DBus.hs new file mode 100644 index 000000000..cfd06f762 --- /dev/null +++ b/Utility/DBus.hs @@ -0,0 +1,28 @@ +{- DBus utilities + - + - Copyright 2012 Joey Hess <joey@kitenet.net> + - + - Licensed under the GNU GPL version 3 or higher. + -} + +{-# LANGUAGE OverloadedStrings #-} + +module Utility.DBus where + +import DBus.Client +import DBus +import Data.Maybe + +type ServiceName = String + +listServiceNames :: Client -> IO [ServiceName] +listServiceNames client = do + reply <- callDBus client "ListNames" [] + return $ fromMaybe [] $ fromVariant (methodReturnBody reply !! 0) + +callDBus :: Client -> MemberName -> [Variant] -> IO MethodReturn +callDBus client name params = call_ client $ + (methodCall "/org/freedesktop/DBus" "org.freedesktop.DBus" name) + { methodCallDestination = Just "org.freedesktop.DBus" + , methodCallBody = params + } |