diff --git a/awesome/dbus.lua b/awesome/dbus.lua index 4809fbe..7fbd279 100644 --- a/awesome/dbus.lua +++ b/awesome/dbus.lua @@ -264,12 +264,15 @@ function dbus.disconnect_signal(name, callback) end end -function dbus.emit_signal(bus_name, path, iface, name, ...) +function dbus.emit_signal(bus_name, dest, path, iface, name, ...) local args = {...} local bus = dbus.get_bus(bus_name) if not bus then return false end local msg = ldbus.message.new_signal(path, iface, name) if not msg then return false end + if dest then + msg:set_destination(dest) + end local iter = msg:iter_init_append() if not iter then return false end for i=1,#args,2 do diff --git a/init.lua b/init.lua index 5d81802..4b2d4e1 100644 --- a/init.lua +++ b/init.lua @@ -151,6 +151,17 @@ function dbus.off(name, callback, opts) end +function dbus.signal(name, opts) + if not dbus.raw.emit_signal then return end + opts = opts or {} + opts.bus = opts.bus or "session" + return dbus.raw.emit_signal( + opts.bus, opts.destination, opts.path, opts.interface, name, + unpack(opts.args or {}) + ) +end + + function dbus.call(name, callback, opts) if not dbus.raw.call_method then return end if callback and type(callback) ~= 'function' then