blob: 8f2e0142f8e5fb9f1cf2066239a51831adc2f9d0 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
|
import gatt
import gi.repository.GLib as glib
import dbus
from dbus.mainloop.glib import DBusGMainLoop
from .bluetooth import InfiniTimeManager, InfiniTimeDevice, NoAdapterFound
from .config import config
class daemon:
def __init__(self):
self.conf = config()
self.manager = InfiniTimeManager()
self.device = InfiniTimeDevice(manager=self.manager, mac_address=self.conf.get_property("last_paired_device"), thread=False)
self.mainloop = glib.MainLoop()
def start(self):
self.device.connect()
self.scan_for_notifications()
def stop(self):
self.mainloop.quit()
self.device.disconnect()
def scan_for_notifications(self):
DBusGMainLoop(set_as_default=True)
monitor_bus = dbus.SessionBus(private=True)
try:
dbus_monitor_iface = dbus.Interface(monitor_bus.get_object('org.freedesktop.DBus', '/org/freedesktop/DBus'), dbus_interface='org.freedesktop.DBus.Monitoring')
dbus_monitor_iface.BecomeMonitor(["interface='org.freedesktop.Notifications', member='Notify'"], 0)
except dbus.exceptions.DBusException as e:
print(e)
return
monitor_bus.add_message_filter(self.notifications)
self.mainloop.run()
def notifications(self, bus, message):
alert_dict = {}
for arg in message.get_args_list():
if isinstance(arg, dbus.Dictionary):
if arg["desktop-entry"] == "sm.puri.Chatty":
alert_dict["category"] = "SMS"
alert_dict["sender"] = message.get_args_list()[3]
alert_dict["message"] = message.get_args_list()[4]
alert_dict_empty = not alert_dict
if len(alert_dict) > 0:
print(alert_dict)
self.device.send_notification(alert_dict)
|