From 26b2955cf35f1e2b29ac1184624fbb5bc3a18a71 Mon Sep 17 00:00:00 2001 From: Artem Timofeev <39891735+atimofeev@users.noreply.github.com> Date: Fri, 10 Jul 2026 23:08:03 +0200 Subject: [PATCH] fix(notifications): dismiss popups when senders close notifications (#2815) When a sender calls CloseNotification (per freedesktop spec) for a persistent notification (expire-timeout=0), the onDropped handler removed the wrapper from internal arrays but did not dismiss the visible popup. The popup remained on screen forever for non-critical notifications like YubiKey touch prompts. Set wrapper.popup=false in onDropped so the popup exits via the normal signal chain. This is minimal; it does not change timeout handling, queue management, or the isPersistent marker. Also reverts the previous workaround that special-cased non-critical expireTimeout=0 to use DMS timeout. Upstream spec-correct behavior is to honor the sender timeout, and fix the dismissal bug instead. Closes #2814 --- quickshell/Services/NotificationService.qml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/quickshell/Services/NotificationService.qml b/quickshell/Services/NotificationService.qml index 8c0135dd5..d5206cb32 100644 --- a/quickshell/Services/NotificationService.qml +++ b/quickshell/Services/NotificationService.qml @@ -892,6 +892,11 @@ Singleton { return; } + // Dismiss visible popup when sender closes the notification + // (e.g. YubiKey sends CloseNotification after touch). + // Without this, expireTimeout=0 popups stay visible forever. + wrapper.popup = false; + const groupKey = getGroupKey(wrapper); const remainingInGroup = root.notifications.filter(n => getGroupKey(n) === groupKey);