diff --git a/data/dbus-interfaces/org.freedesktop.Notifications.xml b/data/dbus-interfaces/org.freedesktop.Notifications.xml
index 0ed865743..dde758500 100644
--- a/data/dbus-interfaces/org.freedesktop.Notifications.xml
+++ b/data/dbus-interfaces/org.freedesktop.Notifications.xml
@@ -31,5 +31,9 @@
+
+
+
+
diff --git a/js/dbusServices/notifications/notificationDaemon.js b/js/dbusServices/notifications/notificationDaemon.js
index 38ad9118f..0be91cef9 100644
--- a/js/dbusServices/notifications/notificationDaemon.js
+++ b/js/dbusServices/notifications/notificationDaemon.js
@@ -27,6 +27,14 @@ export const NotificationDaemon = class extends ServiceImplementation {
log(error.message);
});
+ this._proxy.connectSignal('ActivationToken',
+ (proxy, sender, params) => {
+ const [id] = params;
+ this._emitSignal(
+ this._activeNotifications.get(id),
+ 'ActivationToken',
+ new GLib.Variant('(us)', params));
+ });
this._proxy.connectSignal('ActionInvoked',
(proxy, sender, params) => {
const [id] = params;
diff --git a/js/ui/notificationDaemon.js b/js/ui/notificationDaemon.js
index 4aceb2468..09c1c6b18 100644
--- a/js/ui/notificationDaemon.js
+++ b/js/ui/notificationDaemon.js
@@ -217,6 +217,7 @@ class FdoNotificationDaemon {
hasDefaultAction = true;
} else {
notification.addAction(label, () => {
+ this._emitActivationToken(source, ndata.id);
this._emitActionInvoked(ndata.id, actionId);
});
}
@@ -225,6 +226,7 @@ class FdoNotificationDaemon {
if (hasDefaultAction) {
notification.connect('activated', () => {
+ this._emitActivationToken(source, ndata.id);
this._emitActionInvoked(ndata.id, 'default');
});
} else {
@@ -301,6 +303,16 @@ class FdoNotificationDaemon {
this._dbusImpl.emit_signal('ActionInvoked',
GLib.Variant.new('(us)', [id, action]));
}
+
+ _emitActivationToken(source, id) {
+ const context = global.create_app_launch_context(0, -1);
+ const info = source.app?.get_app_info();
+ if (info) {
+ const token = context.get_startup_notify_id(info, []);
+ this._dbusImpl.emit_signal('ActivationToken',
+ GLib.Variant.new('(us)', [id, token]));
+ }
+ }
}
export const FdoNotificationDaemonSource = GObject.registerClass(