| <?xml version="1.0" encoding="UTF-8"?> |
| <!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd"> |
| <pkgmetadata> |
| <maintainer type="project"> |
| <email>haskell@gentoo.org</email> |
| </maintainer> |
| <maintainer type="project"> |
| <email>proxy-maint@gentoo.org</email> |
| <name>Proxy Maintainers</name> |
| </maintainer> |
| <longdescription> |
| 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 |
| </longdescription> |
| </pkgmetadata> |