Skip to content

mvidner/ruby-dbus

Folders and files

NameName
Last commit message
Last commit date
Apr 3, 2025
Jun 13, 2023
Sep 29, 2023
Apr 3, 2025
Apr 3, 2025
Apr 3, 2025
Feb 5, 2014
Oct 15, 2019
Feb 8, 2022
Sep 5, 2014
Apr 3, 2025
Apr 3, 2025
Apr 30, 2018
Sep 26, 2023
Apr 25, 2007
Apr 3, 2025
Apr 27, 2022
Apr 3, 2025
Feb 11, 2022
Apr 3, 2025
Apr 3, 2025
Apr 3, 2025

Repository files navigation

Ruby D-Bus

D-Bus is an interprocess communication mechanism for Linux. Ruby D-Bus is a pure Ruby library for writing clients and services for D-Bus.

Gem Version Build Status Dependency Status Code Climate Coverage Status

Example

Check whether the system is on battery power via UPower

require "dbus"
sysbus = DBus.system_bus
upower_service   = sysbus["org.freedesktop.UPower"]
upower_object    = upower_service["/org/freedesktop/UPower"]
upower_interface = upower_object["org.freedesktop.UPower"]
on_battery       = upower_interface["OnBattery"]
if on_battery
  puts "The computer IS on battery power."
else
  puts "The computer IS NOT on battery power."
end

Requirements

  • Ruby 2.4 or newer.

Installation

  • gem install ruby-dbus

Features

Ruby D-Bus currently supports the following features:

  • Connecting to local buses.
  • Accessing remote services, objects and interfaces.
  • Invoking methods on remote objects synchronously and asynchronously.
  • Catch signals on remote objects and handle them via callbacks.
  • Remote object introspection.
  • Walking object trees.
  • Creating services and registering them on the bus.
  • Exporting objects with interfaces on a bus for remote use.
  • Rubyish D-Bus object and interface syntax support that automatically allows for introspection.
  • Emitting signals on exported objects.

Usage

See some of the examples in the examples/ subdirectory of the tarball. Also, check out the included tutorial (in Markdown format) in doc/Tutorial.md or view it online on https://github.com/mvidner/ruby-dbus/blob/master/doc/Tutorial.md .

License

Ruby D-Bus is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version.