summaryrefslogtreecommitdiff
path: root/Utility/DBus.hs
diff options
context:
space:
mode:
Diffstat (limited to 'Utility/DBus.hs')
-rw-r--r--Utility/DBus.hs28
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
+ }