mirror of
https://github.com/vincentbernat/i3wm-configuration.git
synced 2025-07-12 19:24:20 +02:00
i3-companion: display notifications for Bluetooth
This is a good example of using PropertiesChanged. I don't know if it's possible to filter the interface we want to receive.
This commit is contained in:
parent
a30c4a5aa9
commit
33e59c769a
1 changed files with 32 additions and 1 deletions
|
@ -404,6 +404,37 @@ async def output_update(i3, event):
|
||||||
output_update.running = asyncio.create_task(output_update_now())
|
output_update.running = asyncio.create_task(output_update_now())
|
||||||
|
|
||||||
|
|
||||||
|
@on(
|
||||||
|
DBusSignal(
|
||||||
|
path="/org/bluez",
|
||||||
|
interface="org.freedesktop.DBus.Properties",
|
||||||
|
member="PropertiesChanged",
|
||||||
|
signature="sa{sv}as",
|
||||||
|
)
|
||||||
|
)
|
||||||
|
async def bluetooth_notifications(
|
||||||
|
i3, event, path, interface, changed, invalid
|
||||||
|
):
|
||||||
|
"""Display notifications related to Bluetooth state."""
|
||||||
|
if interface != "org.bluez.Device1":
|
||||||
|
return
|
||||||
|
if not "Connected" in changed:
|
||||||
|
return
|
||||||
|
logger.info(changed["Connected"])
|
||||||
|
peer = i3.system_bus["org.bluez"][path]
|
||||||
|
obd = await peer.get_async_interface(interface)
|
||||||
|
name = await obd.Name
|
||||||
|
icon = await obd.Icon
|
||||||
|
state = await obd.Connected
|
||||||
|
state = "connected" if state else "disconnected"
|
||||||
|
await notify(
|
||||||
|
i3,
|
||||||
|
app_icon=icon,
|
||||||
|
summary=name,
|
||||||
|
body=f"Bluetooth device {state}",
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
@on(
|
@on(
|
||||||
DBusSignal(
|
DBusSignal(
|
||||||
path="/",
|
path="/",
|
||||||
|
@ -546,7 +577,7 @@ async def network_manager_status(i3, event, *args):
|
||||||
if vpn:
|
if vpn:
|
||||||
state = await nma.State
|
state = await nma.State
|
||||||
if state == NM_ACTIVE_CONNECTION_STATE_ACTIVATED:
|
if state == NM_ACTIVE_CONNECTION_STATE_ACTIVATED:
|
||||||
status.append(icons['vpn'])
|
status.append(icons["vpn"])
|
||||||
status.append(await nma.Id)
|
status.append(await nma.Id)
|
||||||
|
|
||||||
# Final status line
|
# Final status line
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue