As stated in Wikipedia :
D-Bus (Desktop Bus) is a simple inter-process communication (IPC) system for software applications to communicate with one another.
This post provides a simple code snippet in Perl to help you getting started with D-Bus programming.
D-Bus is used by many applications to provide users with a more tightly integrated desktop environment. Basically, an application can use D-Bus to provide services as well as to notify other application when a specific event occurs.
For example, the instant messaging client Pidgin will send a signal on D-Bus when a buddy on the contact list will connect. An application listening for this signal on the D-Bus pick it up (think inter-process messages) and then use D-Bus to ask extra informations to Pidgin about this buddy (think remote procedure call).
As I wanted to experiment with D-Bus, I’ve put this little example in practice. The code is pretty much self explanatory. It is coded in Perl as this is the language I use the most. Besides there are already plenty of examples of D-Bus programming in Python, but not so many in Perl.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | #! /usr/bin/perl use strict; use warnings; use Net::DBus; use Net::DBus::Reactor; # There is the system bus and the session bus. Here we are # interested in the session bus my $bus = Net::DBus->session; # we connect the services Pidgin offers through D-Bus my $purple = $bus->get_service('im.pidgin.purple.PurpleService'); my $object = $purple->get_object('/im/pidgin/purple/PurpleObject', 'im.pidgin.purple.PurpleInterface'); # we register a signal handler for when a connection occurs $object->connect_to_signal('BuddySignedOn', sub { my $buddyId = shift; print "BuddySignedOn:", $object->PurpleBuddyGetAlias($buddyId), "\n"; } ); # and we start the main loop where the events are processed my $reactor = Net::DBus::Reactor->main(); $reactor->run(); exit(0); |
So all in all it makes it easy to offer the user an integrated environment thanks to D-Bus.
Imagine that, every time a new song is played in your music player, a signal is sent on the bus and your instant messaging client picks it up to display it in your status ? Easy to do with D-Bus ! And of course there are endless possibilities to make applications work together !


















