@hackage dbus0.10.2
A client library for the D-Bus IPC system.
Categories
License
GPL-3.0-only
Maintainer
John Millikin <jmillikin@gmail.com>
Links
Versions
Installation
Dependencies (14)
- base >=4.0 && <5.0
- bytestring >=0.9
- cereal >=0.3.4 && <0.4
- containers >=0.1 && <0.6
- libxml-sax >=0.7 && <0.8
- network >=2.2.3 && <2.4 Show all…
Dependents (34)
@hackage/pomohoro, @hackage/credential-store, @hackage/hoodle-core, @hackage/ibus-hs, @hackage/git-annex, @hackage/tianbar, Show all…
Package Flags
network-bytestring-610(off by default)
network-bytestring(on by default)
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