summaryrefslogtreecommitdiffstats
path: root/src/daemon.py
diff options
context:
space:
mode:
authorP. J. McDermott <pj@pehjota.net>2023-10-01 16:32:49 (EDT)
committer P. J. McDermott <pj@pehjota.net>2023-10-01 16:32:49 (EDT)
commitbab4f35fc5c13341fb9cc96a7cb863c5cd5c3f53 (patch)
tree75d9463a02eb5984e1f33aadba830f490f2b103c /src/daemon.py
downloadsiglo-upstream/latest.zip
siglo-upstream/latest.tar.gz
siglo-upstream/latest.tar.bz2
New upstream version 0.9.9upstream/0.9.9upstream/latest
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)
+