pragma Singleton pragma ComponentBehavior: Bound import QtQuick import Quickshell import Quickshell.Services.Notifications import qs.Widgets Singleton { id: notificationRoot readonly property var notificationServer: notificationServer readonly property var trackedNotifications: notificationServer.trackedNotifications readonly property var notificationsNumber: notificationServer.trackedNotifications.values.length property bool shouldShowOsd: false property var currentNotification: null NotificationServer { id: notificationServer imageSupported: true } Connections { function onNotification(notif) { if (notif.body == "MediaOngoingActivity") { notif.dismiss(); return; } if (notif.traked) { return; } notif.tracked = true; notificationRoot.currentNotification = notif; notificationRoot.shouldShowOsd = true; notificationTimer.start(); } target: notificationServer } Timer { id: notificationTimer interval: 5000 onTriggered: parent.shouldShowOsd = false } LazyLoader { id: popupLoader active: notificationRoot.currentNotification && notificationRoot.shouldShowOsd component: PanelWindow { id: notificationWindow anchors.top: true margins.top: screen.height / 100 exclusiveZone: 0 implicitWidth: 400 implicitHeight: 905 color: "transparent" NotificationWrapper { id: notificationWrapper notification: notificationRoot.currentNotification implicitWidth: notificationWindow.implicitWidth Component.onCompleted: { console.log(notificationWrapper.height); popupLoader.implicitHeight = notificationWrapper.implicitHeight; } onDismissed: { notificationRoot.shouldShowOsd = false; notificationRoot.currentNotification.dismiss(); } } } } }