Dispatch custom actions for calendar reminders

Hi! I am working on some personal project to dispatch custom actions for calendar reminders. Think for example of flashing a Elgato lamp, playing a sound, or sending me a Mattermost channel.

So far, I figured that DBus APIs for Evolution Data Server shouldn’t be used and instead I should make use of `libecal.h`.

I do have a system working that can read events and wanted to turn it into a sort of daemon that emits alerts via DBus so that other apps can hook into it. But before proceeding, I wanted to ask if this is a sensible design and if something similar exists.

I’m keeping tabs on gnome-shell#155 , which has a solution by @mcrha , but I’m not sure if it’s related.

I figured that DBus APIs for Evolution Data Server shouldn’t be used
and instead I should make use of libecal.h.

Hi,

using the programming API, instead of D-Bus directly, will save you
from several problems. It’s not only libecal.h, aka in C, that code is
introspected and vala bindings are available for it too, thus you are
not stuck with C.

I’m keeping tabs on gnome-shell#155 , which has a solution by @mcrha
, but I’m not sure if it’s related.

It is related in a sense of not getting multiple notifications for one
event. The iCalendar RFC allows only some kinds of the reminders
(alarms) to be set on the component. You’d usually use appropriate
reminder type for it, but: a) not every app (nor web interface) allows
all the reminder types the RFC offers; b) you’d need to edit each and
every event to add such special reminder yourself, which does not scale
quickly; thus you want something on top of it.

Both the evolution-alarm-notify and the gnome-shell replacement of it
(your link from above) use EReminderWatcher, which takes care of the
reminders, invokes them and so on. You can use that object to be
notified about the reminders.

Trying to “connect” to the evolution-alarm-notify or to the gnome-
shell-calendar-server might not work. Pity to have in the system
multiple instances of it, but I do not know of any better option
(writing it on your own from scratch won’t probably provide any better
solution, like you still need to know which address books and task
lists to include, schedule timers, know what to do when the timer is
triggered).

Bye,
Milan
1 Like