dbus-0.10.13: A client library for the D-Bus IPC system.

# dbus-0.10.13: A client library for the D-Bus IPC system.

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.

    {-# LANGUAGE OverloadedStrings #-}

    import Data.List (sort)
    import DBus
    import DBus.Client

    main = do
        client <- connectSession
        //
        -- Request a list of connected clients from the bus
        reply <- call_ client (methodCall "/org/freedesktop/DBus" "org.freedesktop.DBus" "ListNames")
            { methodCallDestination = Just "org.freedesktop.DBus"
            }
        //
        -- org.freedesktop.DBus.ListNames() returns a single value, which is
        -- a list of names (here represented as [String])
        let Just names = fromVariant (methodReturnBody reply !! 0)
        //
        -- Print each name on a line, sorted so reserved names are below
        -- temporary names.
        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

Modules

- DBus
  - DBus.Client
  - Internal
    - DBus.Internal.Address
    - DBus.Internal.Message
    - DBus.Internal.Types
    - DBus.Internal.Wire
  - DBus.Introspection
  - DBus.Socket
  - DBus.Transport