From 093f3632d27f6868b1036ab71ce75c47c98e390d Mon Sep 17 00:00:00 2001 From: Adria Martin Date: Fri, 10 Apr 2026 16:35:48 +0700 Subject: [PATCH 1/2] fix(notifications): show fallback icon instead of checkerboard for missing theme icons When Qt cannot resolve a notification icon name (e.g. "audio-headset" from Blueman) because the icon theme is not properly configured, the IconImageProvider returns a purple/black checkerboard missingPixmap. Check icon existence via ThemeIcons.iconExists() before returning the image:// URI, so NImageRounded displays its fallback icon instead. --- Services/System/NotificationService.qml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/Services/System/NotificationService.qml b/Services/System/NotificationService.qml index fff24191e..4126c9175 100644 --- a/Services/System/NotificationService.qml +++ b/Services/System/NotificationService.qml @@ -770,6 +770,11 @@ Singleton { return ""; if (icon.startsWith("/") || icon.startsWith("file://")) return icon; + // Verify the icon exists in the theme before returning its image:// URI. + // Without this check, missing icons render as the purple/black checkerboard + // from IconImageProvider::missingPixmap instead of the notification fallback icon. + if (!ThemeIcons.iconExists(icon)) + return ""; return ThemeIcons.iconFromName(icon); } From 375dfafb5b15f11f576a7d56f367ec9ceb704d28 Mon Sep 17 00:00:00 2001 From: Adria Martin Date: Fri, 10 Apr 2026 19:02:07 +0700 Subject: [PATCH 2/2] chore: remove verbose comment --- Services/System/NotificationService.qml | 3 --- 1 file changed, 3 deletions(-) diff --git a/Services/System/NotificationService.qml b/Services/System/NotificationService.qml index 4126c9175..a853c8e41 100644 --- a/Services/System/NotificationService.qml +++ b/Services/System/NotificationService.qml @@ -770,9 +770,6 @@ Singleton { return ""; if (icon.startsWith("/") || icon.startsWith("file://")) return icon; - // Verify the icon exists in the theme before returning its image:// URI. - // Without this check, missing icons render as the purple/black checkerboard - // from IconImageProvider::missingPixmap instead of the notification fallback icon. if (!ThemeIcons.iconExists(icon)) return ""; return ThemeIcons.iconFromName(icon);