From 11d73833166eaaad8444e69170403d97f6cebf97 Mon Sep 17 00:00:00 2001 From: Alexey Romanoff Date: Thu, 25 Feb 2021 14:32:41 +0300 Subject: [PATCH 1/2] add dbus.signal(name, opts) --- init.lua | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/init.lua b/init.lua index 5d81802..d54818c 100644 --- a/init.lua +++ b/init.lua @@ -151,6 +151,14 @@ 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.path, opts.interface, name) +end + + function dbus.call(name, callback, opts) if not dbus.raw.call_method then return end if callback and type(callback) ~= 'function' then From 2893c10950d11863db95367fa7c103b00c1dbe54 Mon Sep 17 00:00:00 2001 From: Alexey Romanoff Date: Mon, 22 Mar 2021 16:37:19 +0300 Subject: [PATCH 2/2] support destination and arguments for signals --- awesome/dbus.lua | 5 ++++- init.lua | 5 ++++- 2 files changed, 8 insertions(+), 2 deletions(-) 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 d54818c..4b2d4e1 100644 --- a/init.lua +++ b/init.lua @@ -155,7 +155,10 @@ 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.path, opts.interface, name) + return dbus.raw.emit_signal( + opts.bus, opts.destination, opts.path, opts.interface, name, + unpack(opts.args or {}) + ) end