Subject: Re: bug#78103: [PATCH] services/gnome: Include Evolution by default to fix calendar notifications.

From: Maxim Cournoyer <[email-masked]>
Date: Sat, 17 May 2025 11:08:55 +0900

Hi,

Maxim Cournoyer <[email-masked]> writes:

[...]

> Unfortunately, I've finally rebooted my system, and the calendar events
> reminders are still *not* shown, although Evolution is installed as
> expected.  Given that solution worked in Fedora, I suppose we need to
> set XDG_DATA_DIRS or similar, for example to expose a needed d-bus
> service.
>
> I'll have to investigate again.

This is what the D-Bus session chatter looks like in Fedora, when the
alarm is triggered:

--8<---------------cut here---------------start------------->8---
user@fedora:~$ dbus-monitor 
method call time=1747441738.643689 sender=:1.24 -> destination=:1.105 serial=1130 path=/org/gtk/vfs/metadata; interface=org.gtk.vfs.Metadata; member=Remove
   array of bytes "/home/user/.local/share/gvfs-metadata/home" + \0
   array of bytes "/.local/share/gnome-shell/notifications" + \0
signal time=1747441740.043168 sender=:1.105 -> destination=(null destination) serial=7 path=/org/gtk/vfs/metadata; interface=org.gtk.vfs.Metadata; member=AttributeChanged
   string "/home/user/.local/share/gvfs-metadata/home"
   string "/.local/share/gnome-shell/notifications"
method call time=1747441740.048340 sender=:1.24 -> destination=org.freedesktop.DBus serial=1131 path=/org/freedesktop/DBus; interface=org.freedesktop.DBus; member=RemoveMatch
   string "type='signal',interface='ca.desrt.dconf.Writer',path='/ca/desrt/dconf/Writer/user',arg0path='/org/gnome/desktop/notifications/application/org-gnome-evolution/'"
method return time=1747441740.048360 sender=org.freedesktop.DBus -> destination=:1.24 serial=4294967295 reply_serial=1131
method call time=1747441740.778987 sender=:1.165 -> destination=:1.154 serial=127 path=/org/gnome/evolution/dataserver/SourceManager/Source_10; interface=org.gnome.evolution.dataserver.Source.Writable; member=Write
   string "
[Data Source]
DisplayName[ar]=شخصي
[...]
DisplayName[zh_TW]=個人
DisplayName=Personal
Enabled=true
Parent=local-stub

[Calendar]
BackendName=local
Color=#62a0ea
Selected=true
Order=0

[Alarms]
IncludeMe=true
LastNotified=2025-05-17T00:29:00Z
ForEveryEvent=false
"
method return time=1747441740.783057 sender=:1.154 -> destination=:1.165 serial=68 reply_serial=127
signal time=1747441740.783229 sender=:1.154 -> destination=(null destination) serial=69 path=/org/gnome/evolution/dataserver/SourceManager/Source_10; interface=org.freedesktop.DBus.Properties; member=PropertiesChanged
   string "org.gnome.evolution.dataserver.Source"
   array [
      dict entry(
         string "Data"
         variant             string "
[Data Source]
DisplayName[ar]=شخصي
[...]
Parent=local-stub

[Calendar]
BackendName=local
Color=#62a0ea
Selected=true
Order=0

[Alarms]
IncludeMe=true
LastNotified=2025-05-17T00:29:00Z
ForEveryEvent=false
"
      )
   ]
   array [
   ]
method call time=1747441740.784275 sender=:1.165 -> destination=org.freedesktop.portal.Desktop serial=128 path=/org/freedesktop/portal/desktop; interface=org.freedesktop.portal.Notification; member=AddNotification
   string "system-calendar
020d77fc9df4e2f93a89560ae580773f54d7adfe
1747441740"
   array [
      dict entry(
         string "title"
         variant             string "Reminders"
      )
      dict entry(
         string "body"
         variant             string "notifications test
05/17/2025 09:30:00 AM (25 minutes)"
      )
      dict entry(
         string "icon"
         variant             struct {
               string "themed"
               variant                   array [
                     string "appointment-soon"
                     string "appointment-soon-symbolic"
                  ]
            }
      )
      dict entry(
         string "priority"
         variant             string "normal"
      )
      dict entry(
         string "default-action"
         variant             string "app.show-reminders"
      )
      dict entry(
         string "buttons"
         variant             array [
               array [
                  dict entry(
                     string "label"
                     variant                         string "Reminders"
                  )
                  dict entry(
                     string "action"
                     variant                         string "app.show-reminders"
                  )
               ]
            ]
      )
   ]
method call time=1747441740.784606 sender=:1.93 -> destination=:1.31 serial=883 path=/org/freedesktop/impl/portal/PermissionStore; interface=org.freedesktop.impl.portal.PermissionStore; member=Lookup
   string "notifications"
   string "notification"
method return time=1747441740.784779 sender=:1.31 -> destination=:1.93 serial=33 reply_serial=883
   array [
      dict entry(
         string "org.gnome.Evolution"
         array [
            string "yes"
         ]
      )
   ]
   variant       byte 0
method call time=1747441740.784903 sender=:1.93 -> destination=:1.95 serial=884 path=/org/freedesktop/portal/desktop; interface=org.freedesktop.impl.portal.Notification; member=AddNotification
   string "org.gnome.Evolution"
   string "system-calendar
020d77fc9df4e2f93a89560ae580773f54d7adfe
1747441740"
   array [
      dict entry(
         string "title"
         variant             string "Reminders"
      )
      dict entry(
         string "body"
         variant             string "notifications test
05/17/2025 09:30:00 AM (25 minutes)"
      )
      dict entry(
         string "icon"
         variant             struct {
               string "themed"
               variant                   array [
                     string "appointment-soon"
                     string "appointment-soon-symbolic"
                  ]
            }
      )
      dict entry(
         string "priority"
         variant             string "normal"
      )
      dict entry(
         string "default-action"
         variant             string "app.show-reminders"
      )
      dict entry(
         string "buttons"
         variant             array [
               array [
                  dict entry(
                     string "label"
                     variant                         string "Reminders"
                  )
                  dict entry(
                     string "action"
                     variant                         string "app.show-reminders"
                  )
               ]
            ]
      )
   ]
method call time=1747441740.785260 sender=:1.95 -> destination=:1.24 serial=258 path=/org/gtk/Notifications; interface=org.gtk.Notifications; member=AddNotification
   string "org.gnome.Evolution"
   string "system-calendar
020d77fc9df4e2f93a89560ae580773f54d7adfe
1747441740"
   array [
      dict entry(
         string "title"
         variant             string "Reminders"
      )
      dict entry(
         string "body"
         variant             string "notifications test
05/17/2025 09:30:00 AM (25 minutes)"
      )
      dict entry(
         string "icon"
         variant             struct {
               string "themed"
               variant                   array [
                     string "appointment-soon"
                     string "appointment-soon-symbolic"
                  ]
            }
      )
      dict entry(
         string "priority"
         variant             string "normal"
      )
      dict entry(
         string "default-action"
         variant             string "app.show-reminders"
      )
      dict entry(
         string "buttons"
         variant             array [
               array [
                  dict entry(
                     string "label"
                     variant                         string "Reminders"
                  )
                  dict entry(
                     string "action"
                     variant                         string "app.show-reminders"
                  )
               ]
            ]
      )
   ]
method return time=1747441740.785586 sender=:1.95 -> destination=:1.93 serial=259 reply_serial=884
method call time=1747441740.787459 sender=:1.24 -> destination=org.freedesktop.DBus serial=1132 path=/org/freedesktop/DBus; interface=org.freedesktop.DBus; member=AddMatch
   string "type='signal',interface='ca.desrt.dconf.Writer',path='/ca/desrt/dconf/Writer/user',arg0path='/org/gnome/desktop/notifications/application/org-gnome-evolution/'"
method return time=1747441740.787475 sender=org.freedesktop.DBus -> destination=:1.24 serial=4294967295 reply_serial=1132
method call time=1747441740.787867 sender=:1.24 -> destination=ca.desrt.dconf serial=1133 path=/ca/desrt/dconf/Writer/user; interface=ca.desrt.dconf.Writer; member=Change
   array of bytes [
      2f 6f 72 67 2f 67 6e 6f 6d 65 2f 64 65 73 6b 74 6f 70 2f 6e 6f 74 69 66
      69 63 61 74 69 6f 6e 73 2f 61 70 70 6c 69 63 61 74 69 6f 6e 2f 6f 72 67
      2d 67 6e 6f 6d 65 2d 65 76 6f 6c 75 74 69 6f 6e 2f 61 70 70 6c 69 63 61
      74 69 6f 6e 2d 69 64 00 6f 72 67 2e 67 6e 6f 6d 65 2e 45 76 6f 6c 75 74
      69 6f 6e 2e 64 65 73 6b 74 6f 70 00 00 73 00 50 70
   ]
method return time=1747441740.788103 sender=:1.116 -> destination=:1.24 serial=101 reply_serial=1133
   string ":1.116:user:57"
method return time=1747441740.793485 sender=:1.24 -> destination=:1.95 serial=1134 reply_serial=258
method call time=1747441743.717813 sender=:1.135 -> destination=org.gtk.Notifications serial=109 path=/org/gtk/Notifications; interface=org.gtk.Notifications; member=RemoveNotification
   string "org.gnome.Ptyxis"
   string "177d08eb-7bed-4827-b5ed-ff29c125ea49"
--8<---------------cut here---------------end--------------->8---

The same in Guix System, with Evolution installed to the system profile,
produces something similar:

--8<---------------cut here---------------start------------->8---
method call time=1747445640.987638 sender=:1.75 -> destination=ca.desrt.dconf serial=120 path=/ca/desrt/dconf/Writer/user; interface=ca.desrt.dconf.Writer; member=Change
   array of bytes [
      2f 6f 72 67 2f 67 6e 6f 6d 65 2f 65 76 6f 6c 75 74 69 6f 6e 2d 64 61 74
      61 2d 73 65 72 76 65 72 2f 63 61 6c 65 6e 64 61 72 2f 72 65 6d 69 6e 64
      65 72 73 2d 70 61 73 74 00 00 00 00 00 00 00 00 73 79 73 74 65 6d 2d 63
      61 6c 65 6e 64 61 72 0a 35 62 33 39 31 30 31 64 31 61 39 38 34 64 34 32
      39 62 66 33 34 31 35 33 39 38 66 34 33 38 35 31 39 39 61 65 32 61 63 37
      09 32 30 32 35 30 35 31 37 54 30 33 33 39 30 30 0a 31 37 34 37 34 34 35
      36 34 30 0a 31 37 34 37 34 34 35 39 34 30 0a 31 37 34 37 34 34 37 32 30
      30 0a 42 45 47 49 4e 3a 56 45 56 45 4e 54 0d 0a 55 49 44 3a 66 39 64 32
      66 39 39 32 39 33 65 38 65 62 62 34 31 34 35 31 31 36 61 30 39 32 39 34
      37 37 66 30 64 61 64 38 64 38 62 37 0d 0a 44 54 53 54 41 4d 50 3a 32 30
      32 35 30 35 31 37 54 30 31 33 30 32 36 5a 0d 0a 44 54 53 54 41 52 54 3b
      54 5a 49 44 3d 2f 66 72 65 65 61 73 73 6f 63 69 61 74 69 6f 6e 2e 73 6f
      75 72 63 65 66 6f 72 67 65 2e 6e 65 74 2f 45 75 72 6f 70 65 2f 50 61 72
      69 73 3a 0d 0a 20 32 30 32 35 30 35 31 37 54 30 33 33 39 30 30 0d 0a 44
      54 45 4e 44 3b 54 5a 49 44 3d 2f 66 72 65 65 61 73 73 6f 63 69 61 74 69
      6f 6e 2e 73 6f 75 72 63 65 66 6f 72 67 65 2e 6e 65 74 2f 45 75 72 6f 70
      65 2f 50 61 72 69 73 3a 32 30 32 35 30 35 31 37 54 30 34 30 30 30 30 0d
      0a 53 55 4d 4d 41 52 59 3a 74 65 73 74 6f 0d 0a 53 45 51 55 45 4e 43 45
      3a 37 0d 0a 43 52 45 41 54 45 44 3a 32 30 32 35 30 35 31 37 54 30 31 33
      30 32 36 5a 0d 0a 4c 41 53 54 2d 4d 4f 44 49 46 49 45 44 3a 32 30 32 35
      30 35 31 37 54 30 31 33 33 32 33 5a 0d 0a 42 45 47 49 4e 3a 56 41 4c 41
      52 4d 0d 0a 58 2d 45 56 4f 4c 55 54 49 4f 4e 2d 41 4c 41 52 4d 2d 55 49
      44 3a 66 61 39 32 39 31 37 62 35 36 64 64 66 37 35 31 62 31 33 65 32 61
      65 36 31 33 38 32 35 30 32 33 63 37 64 65 30 66 34 38 0d 0a 41 43 54 49
      4f 4e 3a 41 55 44 49 4f 0d 0a 54 52 49 47 47 45 52 3b 52 45 4c 41 54 45
      44 3d 53 54 41 52 54 3a 50 54 30 53 0d 0a 45 4e 44 3a 56 41 4c 41 52 4d
      0d 0a 42 45 47 49 4e 3a 56 41 4c 41 52 4d 0d 0a 58 2d 45 56 4f 4c 55 54
      49 4f 4e 2d 41 4c 41 52 4d 2d 55 49 44 3a 35 62 33 39 31 30 31 64 31 61
      39 38 34 64 34 32 39 62 66 33 34 31 35 33 39 38 66 34 33 38 35 31 39 39
      61 65 32 61 63 37 0d 0a 41 43 54 49 4f 4e 3a 41 55 44 49 4f 0d 0a 54 52
      49 47 47 45 52 3b 52 45 4c 41 54 45 44 3d 53 54 41 52 54 3a 2d 50 54 35
      4d 0d 0a 41 43 4b 4e 4f 57 4c 45 44 47 45 44 3a 32 30 32 35 30 35 31 37
      54 30 31 33 32 30 30 5a 0d 0a 45 4e 44 3a 56 41 4c 41 52 4d 0d 0a 45 4e
      44 3a 56 45 56 45 4e 54 0d 0a 00 e3 02 00 61 73 00 39 00 2b 03
   ]
method call time=1747445640.987790 sender=:1.75 -> destination=:1.16 serial=121 path=/org/gnome/evolution/dataserver/SourceManager/Source_13; interface=org.gnome.evolution.dataserver.Source.Writable; member=Write
   string "
[Data Source]
DisplayName[ar]=\D8\B4\D8\AE\D8\B5\D9\8A
[...]
DisplayName=Personal
Enabled=true
Parent=local-stub

[Calendar]
BackendName=local
Color=#62a0ea
Selected=true
Order=0

[Offline]
StaySynchronized=true

[Refresh]
Enabled=true
EnabledOnMeteredNetwork=true
IntervalMinutes=30

[Alarms]
IncludeMe=true
LastNotified=2025-05-17T01:34:00Z
ForEveryEvent=false
"
method return time=1747445640.988368 sender=:1.16 -> destination=:1.75 serial=74 reply_serial=121
signal time=1747445640.988373 sender=:1.16 -> destination=(null destination) serial=75 path=/org/gnome/evolution/dataserver/SourceManager/Source_13; interface=org.freedesktop.DBus.Properties; member=PropertiesChanged
   string "org.gnome.evolution.dataserver.Source"
   array [
      dict entry(
         string "Data"
         variant             string "
[Data Source]
DisplayName[ar]=\D8\B4\D8\AE\D8\B5\D9\8A
[...]
DisplayName=Personal
Enabled=true
Parent=local-stub

[Calendar]
BackendName=local
Color=#62a0ea
Selected=true
Order=0

[Offline]
StaySynchronized=true

[Refresh]
Enabled=true
EnabledOnMeteredNetwork=true
IntervalMinutes=30

[Alarms]
IncludeMe=true
LastNotified=2025-05-17T01:34:00Z
ForEveryEvent=false
"
      )
   ]
   array [
   ]
method call time=1747445640.988452 sender=:1.75 -> destination=:1.47 serial=122 path=/org/gnome/evolution/dataserver/Subprocess/1457/2; interface=org.gnome.evolution.dataserver.Calendar; member=DiscardAlarm
   string "f9d2f99293e8ebb4145116a0929477f0dad8d8b7"
   string "20250517T033900"
   string "5b39101d1a984d429bf3415398f4385199ae2ac7"
   uint32 16
method call time=1747445640.988750 sender=:1.47 -> destination=org.freedesktop.DBus serial=246 path=/org/freedesktop/DBus; interface=org.freedesktop.DBus; member=GetNameOwner
   string ":1.75"
method return time=1747445640.988785 sender=org.freedesktop.DBus -> destination=:1.47 serial=67 reply_serial=246
   string ":1.75"
signal time=1747445640.988974 sender=:1.47 -> destination=(null destination) serial=247 path=/org/gnome/evolution/dataserver/Subprocess/1457/2; interface=org.freedesktop.DBus.Properties; member=PropertiesChanged
   string "org.gnome.evolution.dataserver.Calendar"
   array [
      dict entry(
         string "Revision"
         variant             string "2025-05-17T01:34:00.988851Z(7)"
      )
   ]
   array [
   ]
signal time=1747445640.989165 sender=:1.47 -> destination=(null destination) serial=248 path=/org/gnome/evolution/dataserver/Subprocess/1457/2; interface=org.freedesktop.DBus.Properties; member=PropertiesChanged
   string "org.gnome.evolution.dataserver.Calendar"
   array [
      dict entry(
         string "Revision"
         variant             string "2025-05-17T01:34:00.989052Z(8)"
      )
   ]
   array [
   ]
method call time=1747445641.001874 sender=:1.47 -> destination=:1.105 serial=249 path=/org/gtk/vfs/metadata; interface=org.gtk.vfs.Metadata; member=Move
   array of bytes "/root/.local/share/gvfs-metadata/home" + \0
   array of bytes "/.local/share/evolution/calendar/system/calendar.ics~" + \0
   array of bytes "/.local/share/evolution/calendar/system/calendar.ics" + \0
method return time=1747445641.001962 sender=:1.47 -> destination=:1.75 serial=250 reply_serial=122
method return time=1747445641.006105 sender=:1.15 -> destination=:1.75 serial=56 reply_serial=120
   string ":1.15:user:30"
signal time=1747445641.006314 sender=:1.15 -> destination=(null destination) serial=57 path=/ca/desrt/dconf/Writer/user; interface=ca.desrt.dconf.Writer; member=Notify
   string "/org/gnome/evolution-data-server/calendar/reminders-past"
   array [
      string ""
   ]
   string ":1.15:user:30"
method call time=1747445641.006416 sender=:1.75 -> destination=ca.desrt.dconf serial=123 path=/ca/desrt/dconf/Writer/user; interface=ca.desrt.dconf.Writer; member=Change
   array of bytes [
      2f 6f 72 67 2f 67 6e 6f 6d 65 2f 65 76 6f 6c 75 74 69 6f 6e 2d 64 61 74
      61 2d 73 65 72 76 65 72 2f 63 61 6c 65 6e 64 61 72 2f 72 65 6d 69 6e 64
      65 72 73 2d 70 61 73 74 00 00 00 00 00 00 00 00 00 61 73 00 39 45
   ]
method return time=1747445641.026315 sender=:1.15 -> destination=:1.75 serial=58 reply_serial=123
   string ":1.15:user:31"
signal time=1747445641.026590 sender=:1.15 -> destination=(null destination) serial=59 path=/ca/desrt/dconf/Writer/user; interface=ca.desrt.dconf.Writer; member=Notify
   string "/org/gnome/evolution-data-server/calendar/reminders-past"
   array [
      string ""
   ]
   string ":1.15:user:31"
signal time=1747445641.973375 sender=:1.105 -> destination=(null destination) serial=13 path=/org/gtk/vfs/metadata; interface=org.gtk.vfs.Metadata; member=AttributeChanged
   string "/root/.local/share/gvfs-metadata/home"
   string "/.local/share/evolution/calendar/system/calendar.ics~"
signal time=1747445641.973436 sender=:1.105 -> destination=(null destination) serial=14 path=/org/gtk/vfs/metadata; interface=org.gtk.vfs.Metadata; member=AttributeChanged
   string "/root/.local/share/gvfs-metadata/home"
   string "/.local/share/evolution/calendar/system/calendar.ics"
--8<---------------cut here---------------end--------------->8---

Fedora has:

evolution-data-server 3.56.1
evolution: not installed (I'm surprised by this, earlier I had found
notifications were missing without it installed -- perhaps an update
fixed it)
libportal: 0.9.1
xdg-desktop-portal-gnome: 48.0
xdg-desktop-portal: 1.20.0
dconf: 0.40.0
gtk3: 3.24.49
gtk4: 4.18.4

Guix has:

evolution-data-server: 3.56.1
evolution: 3.54.3
libportal: 0.7.1
xdg-desktop-portal-gnome: 46.2
xdg-desktop-portal: 1.18.4
dconf: 0.40.0
gtk3: 3.24.43
gtk4: 4.16.13

-- 
Thanks,
Maxim