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
Source
# File lib/dbus/bus.rb, line 233 def self.address_from_file # systemd uses /etc/machine-id # traditional dbus uses /var/lib/dbus/machine-id machine_id_path = Dir["{/etc,/var/lib/dbus,/var/db/dbus}/machine-id"].first return nil unless machine_id_path machine_id = File.read(machine_id_path).chomp display = ENV["DISPLAY"][/:(\d+)\.?/, 1] bus_file_path = File.join(ENV["HOME"], "/.dbus/session-bus/#{machine_id}-#{display}") return nil unless File.exist?(bus_file_path) File.open(bus_file_path).each_line do |line| if line =~ /^DBUS_SESSION_BUS_ADDRESS=(.*)/ address = Regexp.last_match(1) return address[/\A'(.*)'\z/, 1] || address[/\A"(.*)"\z/, 1] || address end end end
Source
# File lib/dbus/bus.rb, line 222 def initialize super(self.class.session_bus_address) end
Get the the default session bus.
Calls superclass method
DBus::BusConnection::new
Source
# File lib/dbus/bus.rb, line 226 def self.session_bus_address ENV["DBUS_SESSION_BUS_ADDRESS"] || address_from_file || ("launchd:env=DBUS_LAUNCHD_SESSION_BUS_SOCKET" if Platform.macos?) || (raise NotImplementedError, "Cannot find session bus; sorry, haven't figured out autolaunch yet") end