i3-companion: specify bus to listen to for DBus events

This commit is contained in:
Vincent Bernat 2021-07-14 16:57:23 +02:00
parent a44cd7dc54
commit de9c33eaad

View file

@ -72,7 +72,7 @@ logger = logging.getLogger("i3-companion")
# Events for @on decorator
DBusSignal = collections.namedtuple(
"DBusSignal", ["path", "interface", "member", "signature"]
"DBusSignal", ["system", "path", "interface", "member", "signature"]
)
StartEvent = object()
I3Event = i3ipc.Event
@ -521,6 +521,7 @@ async def output_update(i3, event):
@on(
DBusSignal(
system=True,
path="/org/bluez",
interface="org.freedesktop.DBus.Properties",
member="PropertiesChanged",
@ -551,6 +552,7 @@ async def bluetooth_notifications(
@on(
DBusSignal(
system=True,
path="/",
interface="org.freedesktop.NetworkManager.Connection.Active",
member="StateChanged",
@ -596,12 +598,14 @@ async def network_manager_notifications(i3, event, path, state, reason):
@on(
StartEvent,
DBusSignal(
system=True,
path="/",
interface="org.freedesktop.NetworkManager.Connection.Active",
member="StateChanged",
signature="uu",
),
DBusSignal(
system=True,
path="/",
interface="org.freedesktop.NetworkManager.AccessPoint",
member="PropertiesChanged",
@ -723,7 +727,7 @@ async def main(options):
for fn, events in on.functions.items():
for event in events:
if isinstance(event, DBusSignal):
for bus in {i3.session_bus, i3.system_bus}:
bus = i3.system_bus if event.system else i3.session_bus
def wrapping(fn, event):
@ravel.signal(