haskell@gentoo.org D-Bus is a simple, message-based protocol for inter-process communication, which allows applications to interact with other parts of the machine and the user's session using remote procedure calls. D-Bus is a essential part of the modern Linux desktop, where it replaces earlier protocols such as CORBA and DCOP. This library is an implementation of the D-Bus protocol in Haskell. It can be used to add D-Bus support to Haskell applications, without the awkward interfaces common to foreign bindings. Example: connect to the session bus, and get a list of active names. @ &#x7b;-\# LANGUAGE OverloadedStrings \#-&#x7d; import Data.List (sort) import DBus import DBus.Client main = do &#x20; client <- connectSession &#x20; // &#x20; \-- Request a list of connected clients from the bus &#x20; reply <- call_ client (methodCall \"\/org\/freedesktop\/DBus\" \"org.freedesktop.DBus\" \"ListNames\") &#x20; &#x7b; methodCallDestination = Just \"org.freedesktop.DBus\" &#x20; &#x7d; &#x20; // &#x20; \-- org.freedesktop.DBus.ListNames() returns a single value, which is &#x20; \-- a list of names (here represented as [String]) &#x20; let Just names = fromVariant (methodReturnBody reply !! 0) &#x20; // &#x20; \-- Print each name on a line, sorted so reserved names are below &#x20; \-- temporary names. &#x20; mapM_ putStrLn (sort names) @ >$ ghc --make list-names.hs >$ ./list-names >:1.0 >:1.1 >:1.10 >:1.106 >:1.109 >:1.110 >ca.desrt.dconf >org.freedesktop.DBus >org.freedesktop.Notifications >org.freedesktop.secrets >org.gnome.ScreenSaver