class DBus::ASessionBus

D-Bus session bus class ↑

The session bus is a session specific bus (mostly for desktop use).

Use SessionBus, the non-singleton ASessionBus is for the test suite.

Public Class Methods

address_from_file() click to toggle source
    # File lib/dbus/bus.rb
617 def self.address_from_file
618   # systemd uses /etc/machine-id
619   # traditional dbus uses /var/lib/dbus/machine-id
620   machine_id_path = Dir["{/etc,/var/lib/dbus,/var/db/dbus}/machine-id"].first
621   return nil unless machine_id_path
622   machine_id = File.read(machine_id_path).chomp
623 
624   display = ENV["DISPLAY"][/:(\d+)\.?/, 1]
625 
626   bus_file_path = File.join(ENV["HOME"], "/.dbus/session-bus/#{machine_id}-#{display}")
627   return nil unless File.exist?(bus_file_path)
628 
629   File.open(bus_file_path).each_line do |line|
630     if line =~ /^DBUS_SESSION_BUS_ADDRESS=(.*)/
631       address = Regexp.last_match(1)
632       return address[/\A'(.*)'\z/, 1] || address[/\A"(.*)"\z/, 1] || address
633     end
634   end
635 end
new() click to toggle source

Get the the default session bus.

Calls superclass method DBus::Connection::new
    # File lib/dbus/bus.rb
606 def initialize
607   super(self.class.session_bus_address)
608   send_hello
609 end
session_bus_address() click to toggle source
    # File lib/dbus/bus.rb
611 def self.session_bus_address
612   ENV["DBUS_SESSION_BUS_ADDRESS"] ||
613     address_from_file ||
614     "launchd:env=DBUS_LAUNCHD_SESSION_BUS_SOCKET"
615 end