DBusSharp
From NDesk
ndesk-dbus is a C# implementation of D-Bus. It's often referred to as dbus-sharp, or "managed D-Bus" to avoid confusion with existing bindings (which wrap libdbus).
D-Bus is an inter-process communication framework that lets applications interface with the system event bus as well as allowing them to talk to one another in a peer-to-peer configuration.
Contents |
Status
This software is under development but is already used by a wide range of applications for tasks as simple as maintaining a single instance of the GUI to whole instant messaging frameworks and hardware detection APIs.
It provides a tested, high-performance bridge to and from all systems that are exposed via D-Bus, regardless of programming language, UI toolkit or license. The source code is MIT X11 licensed (Free Software/Open Source), allowing integration into other projects with very few restrictions.
The code is a clean-room implementation based on the D-Bus Specification Version 0.11 and study of the wire protocol of existing tools.
It aims for compatibility with Mono and Microsoft .NET frameworks supporting the 2.0 profile. Backward compatibility with 1.0 will not be a consideration. Ongoing work to ensure CLS compliance means that managed D-Bus can be used by any language that can target the CLR.
Cross platform support
Supported platforms
A standard build of managed D-Bus will work across a wide range of platforms:
- x86
- 64-bit (eg. AMD64)
- Big endian (eg. PPC)
- ARM (eg. Nokia 770)
- Mono 1.1.13 or newer
- GNU/Linux
- FreeBSD
- Mac OS X
- Microsoft Windows / .NET runtime (in the 0.5 development branch)
Soon to be supported
- MIPS (untested) (eg. wifi routers) -- pending JIT fix
Users
This is a list of applications known to make use of managed D-Bus:
- NDesk component object model (NParts etc.)
- telepathy-sharp
- Tapioca VoIP and IM application development framework (tapioca-sharp)
- Landell VoIP and IM client using Gtk#
- Gnome NetworkManager binding
- Gnome Power Manager binding
- Banshee provides and uses a media player API, and uses Gnome Power Manager, Gnome NetworkManager, Helix, notify-sharp, org.gnome.SettingsDaemon
- Helix D-Bus for remote control of the media stream
- hal-sharp is provides access to HAL, the Hardware Abstraction Layer
- NotifySharp provides a client implementation for Desktop Notifications and works as a libnotify client replacement
- F-Spot personal photo management application, for single-instance detection [1]
- Tomboy simple note taking application, for remote control and single-instance detection
- dcsharp file sharing client using the Direct Connect protocol, for notifications, single instance and remote control
- LAT LDAP Administration Tool
- VMX Manager, Virtual Machine Manager, GNOME SVN(?)
- Capuchin (formerly NewStuffManager), a plugin update/download service
- last-exit, a music player for Last.fm
- Muine, a music player for GNOME
- The Fuzz, process security manager with GUI
- GShare, file sharing utility
- Chatter (Telepathy GnomeUI) VoIP and IM client using Gtk#
- Babuine TimeTracker
- gnome-keyring-sharp GNOME Keyring implementation, to get the keyring socket address
- eIDconfig-belgium configuration toolkit for the Belgian eID middleware
- PodSleuth iPod model information discovery/export tool, using hal-sharp
- Banter collaboration client (Telepathy)
- circ IRC client
- Beagle xesam-adapter desktop search API
- D-Bus Explorer
- GNOME Do
- Nemo file manager, for Tracker
- Blam RSS aggregator
- MonoTorrent / Monsoon BitTorrent client
Documentation
See the NDesk.DBus documentation for a brief developers guide.
Contact
Support can be found on the #managed-dbus IRC channel on irc.gnome.org
Reporting bugs
Bugs are now tracked on the NDesk D-Bus Launchpad bug tracker.
If you have sent bug reports or feature requests directly to the authors in the past, please create a new entry in the tracker to ensure the issues are dealt with.
Download
See the managed D-Bus release archive.
Development
See the development roadmap for a detailed list of remaining tasks.
git-clone git://git.ndesk.org/pub/scm/dbus-sharp
The dbus-sharp API is now fairly stable stable. It's best to install a released version and depend on it from your application rather than bundling the sources directly as has been done in the past.
There is also a module which provides GLib integration as an optional extra:
git-clone git://git.ndesk.org/pub/scm/dbus-sharp-glib
Exposition
- GNOME Boston Summit 2006, MIT Media Lab, Aaron Bockover
- GUADEC 2007 Birmingham, UCE Conservatoire, Alp Toker (view slides)