Need help with dbus-native?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

225 Stars 92 Forks Other 445 Commits 81 Opened issues


D-bus protocol client and server for node.js written in native javascript

Services available


Need anything else?

Contributors list


Greenkeeper badge D-bus protocol client and server for node.js

Build Status


npm install dbus-native


git clone # clone the repo
cd node-dbus
npm install # install dependencies
sudo cp examples/com.github.sidorares.dbus.Example.conf /etc/dbus-1/system.d/ # if you want to test examples/service.js


Short example using desktop notifications service

var dbus = require('dbus-native');
var sessionBus = dbus.sessionBus();
    'org.freedesktop.Notifications', function(err, notifications) {

// dbus signals are EventEmitter events
notifications.on('ActionInvoked', function() {
    console.log('ActionInvoked', arguments);
notifications.on('NotificationClosed', function() {
    console.log('NotificationClosed', arguments);
notifications.Notify('exampl', 0, '', 'summary 3', 'new message text', ['xxx yyy', 'test2', 'test3', 'test4'], [],  5, function(err, id) {
   //setTimeout(function() { n.CloseNotification(id, console.log); }, 4000);



Low level messaging: bus connection

connection = dbus.createClient(options)

options: - socket - unix socket path - port - TCP port - host - TCP host - busAddress - encoded bus address. Default is

environment variable. See - authMethods - array of authentication methods, which are attempted in the order provided (default:['EXTERNAL', 'DBUSCOOKIESHA1', 'ANONYMOUS']) - ayBuffer - boolean (default:true): if true 'ay' dbus fields are returned as buffers - ReturnLongjs - boolean (default:false): if true 64 bit dbus fields (x/t) are read out as Long.js objects, otherwise they are converted to numbers (which should be good up to 53 bits) - ( TODO: add/document option to use adress from X11 session )

connection has only one method,


message fields: - type - methodCall, methodReturn, error or signal - path - object path - interface - destination - sender - member - serial - signature - body - errorName - replySerial

connection signals: - connect - emitted after successful authentication - message - error


var dbus = require('dbus-native');
var conn = dbus.createConnection();
    destination: 'org.freedesktop.DBus',
    'interface': 'org.freedesktop.DBus',
    member: 'Hello',
    type: dbus.messageType.methodCall
conn.on('message', function(msg) { console.log(msg); });

Note on INT64 'x' and UINT64 't'

Long.js is used for 64 Bit support. The following javascript types can be marshalled into 64 bit dbus fields: - typeof 'number' up to 53bits - typeof 'string' (consisting of decimal digits with no separators or '0x' prefixed hexadecimal) up to full 64bit range - Long.js objects (or object with compatible properties)

By default 64 bit dbus fields are unmarshalled into a 'number' (with precision loss beyond 53 bits). Use {ReturnLongjs:true} option to return the actual Long.js object and preserve the entire 64 bits.


  • - freedesktop reference C library
  • - libdbus
  • - libdbus
  • - libdbus
  • - native js
  • - native python + twisted
  • (seems to be native, but requires libdbus?)
  • (native, sync)
  • (C#/Mono)
  • - erlang
  • - elixir
  • - Blog post about sb-bus and D-Bus in general

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.