A client library for the D-Bus IPC system. https://github.com/rblaze/haskell-dbus#readme

Version on this page:1.0.1
LTS Haskell 16.4:1.2.16
Stackage Nightly 2020-07-04:1.2.16
Latest on Hackage:1.2.16

See all snapshots dbus appears in

Apache-2.0 licensed by John Millikin
Maintained by Andrey Sverdlichenko

Module documentation for 1.0.1

This version can be pinned in stack with:[email protected]:752eaeb63c857e3380fe05df1f78348cc4a87b38f1ad018b9fd9c67a467d2cd9,4037

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