Blob Blame History Raw
name: dbus
version: 1.0.1
x-revision: 2
license: Apache-2.0
license-file: license.txt
author: John Millikin <john@john-millikin.com>
maintainer: Andrey Sverdlichenko <blaze@ruddy.ru>
build-type: Simple
cabal-version: >= 1.8
category: Network, Desktop
stability: experimental
homepage: https://github.com/rblaze/haskell-dbus#readme

synopsis: A client library for the D-Bus IPC system.
description:
  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


extra-source-files:
  examples/dbus-monitor.hs
  examples/export.hs
  examples/introspect.hs
  examples/list-names.hs
  idlxml/dbus.xml

source-repository head
  type: git
  location: https://github.com/rblaze/haskell-dbus

library
  ghc-options: -W -Wall
  hs-source-dirs: lib

  build-depends:
      base >=4.8 && <5
    , bytestring
    , cereal
    , containers
    , deepseq
    , filepath
    , lens
    , libxml-sax
    , network < 2.9
    , parsec
    , random
    , split
    , template-haskell
    , text
    , th-lift
    , transformers
    , unix
    , vector
    , xml-types

  exposed-modules:
    DBus
    DBus.Client
    DBus.Generation
    DBus.Internal.Address
    DBus.Internal.Message
    DBus.Internal.Types
    DBus.Internal.Wire
    DBus.Introspection
    DBus.Socket
    DBus.TH
    DBus.Transport

test-suite dbus_tests
  type: exitcode-stdio-1.0
  main-is: DBusTests.hs
  hs-source-dirs: tests
  ghc-options: -W -Wall

  build-depends:
      dbus
    , base
    , bytestring
    , cereal
    , containers
    , directory
    , extra
    , filepath
    , libxml-sax
    , network < 2.9
    , parsec
    , process
    , QuickCheck
    , random
    , resourcet
    , tasty
    , tasty-hunit
    , tasty-quickcheck
    , text
    , transformers
    , unix
    , vector
    , xml-types

  other-modules:
    DBusTests.Address
    DBusTests.BusName
    DBusTests.Client
    DBusTests.ErrorName
    DBusTests.Generation
    DBusTests.Integration
    DBusTests.InterfaceName
    DBusTests.Introspection
    DBusTests.MemberName
    DBusTests.Message
    DBusTests.ObjectPath
    DBusTests.Serialization
    DBusTests.Signature
    DBusTests.Socket
    DBusTests.TH
    DBusTests.Transport
    DBusTests.Util
    DBusTests.Variant
    DBusTests.Wire

benchmark dbus_benchmarks
  type: exitcode-stdio-1.0
  main-is: DBusBenchmarks.hs
  hs-source-dirs: benchmarks
  ghc-options: -Wall -fno-warn-orphans

  build-depends:
      dbus
    , base
    , criterion