From 0ce6e7b8e12cacc6a22a8284e11058edb26b1805 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Danielle=20For=C3=A9?= Date: Thu, 20 Nov 2025 10:11:06 -0800 Subject: [PATCH 1/2] Make screen reader announce notifications --- src/AbstractBubble.vala | 2 ++ src/Bubble.vala | 10 ++++++++++ 2 files changed, 12 insertions(+) diff --git a/src/AbstractBubble.vala b/src/AbstractBubble.vala index 53974b7..197fe0b 100644 --- a/src/AbstractBubble.vala +++ b/src/AbstractBubble.vala @@ -112,6 +112,8 @@ public class Notifications.AbstractBubble : Gtk.Window { motion_controller.leave.connect (pointer_leave); carousel.add_controller (motion_controller); + accessible_role = ALERT; + child.realize.connect (() => { if (Gdk.Display.get_default () is Gdk.Wayland.Display) { // We have to wrap in Idle otherwise the Meta.Window of the WaylandSurface in Gala is still null diff --git a/src/Bubble.vala b/src/Bubble.vala index 88b068e..6d78b87 100644 --- a/src/Bubble.vala +++ b/src/Bubble.vala @@ -23,6 +23,16 @@ public class Notifications.Bubble : AbstractBubble { content_area.add_child (contents); content_area.visible_child = contents; + + map.connect (() => { + ((Gtk.Window) get_root ()).announce ( + _("Notification from %s: %s %s").printf ( + notification.app_name, + notification.summary, + notification.body + ), HIGH + ); + }); } } From 1fc85f6236ea976e9615eaae4cf30c182956d006 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Danielle=20For=C3=A9?= Date: Thu, 20 Nov 2025 10:13:21 -0800 Subject: [PATCH 2/2] Update Bubble.vala --- src/Bubble.vala | 1 + 1 file changed, 1 insertion(+) diff --git a/src/Bubble.vala b/src/Bubble.vala index 6d78b87..b556b25 100644 --- a/src/Bubble.vala +++ b/src/Bubble.vala @@ -26,6 +26,7 @@ public class Notifications.Bubble : AbstractBubble { map.connect (() => { ((Gtk.Window) get_root ()).announce ( + /// TRANSLATORS: first argument is an app name, the second and third arguments are notification summary and body _("Notification from %s: %s %s").printf ( notification.app_name, notification.summary,