summaryrefslogtreecommitdiffstats
path: root/src/daemon.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/daemon.py')
-rw-r--r--src/daemon.py49
1 files changed, 49 insertions, 0 deletions
diff --git a/src/daemon.py b/src/daemon.py
new file mode 100644
index 0000000..8f2e014
--- /dev/null
+++ b/src/daemon.py
@@ -0,0 +1,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)
+