import Quickshell import Quickshell.Services.Notifications import Quickshell.Wayland import QtQuick PanelWindow { id: root anchors { top: true left: true } margins { top: 15 left: 15 } implicitWidth: 360 implicitHeight: notificationColumn.implicitHeight color: "transparent" exclusiveZone: 0 WlrLayershell.layer: WlrLayer.Overlay NotificationServer { id: server bodySupported: true imageSupported: false actionsSupported: true onNotification: notification => { notification.tracked = true } } Column { id: notificationColumn spacing: 10 Repeater { model: server.trackedNotifications Rectangle { id: notification width: 360 height: Math.max(content.implicitHeight + 24, 80) color: "#000000" border.width: 1 border.color: "#404040" opacity: 0 Behavior on y { NumberAnimation { duration: 200 easing.type: Easing.OutCubic } } Behavior on opacity { NumberAnimation { duration: 150 } } Component.onCompleted: opacity = shellRoot.dnd ? 0 : 0.8 Timer { interval: 2000 running: true repeat: false onTriggered: { notification.opacity = 0 destroyTimer.start() } } Timer { id: destroyTimer interval: 150 running: false repeat: false onTriggered: { modelData.dismiss() } } Column { id: content anchors.fill: parent anchors.margins: 12 spacing: 4 Text { text: modelData.summary color: "white" font.bold: true } Text { text: modelData.body color: "white" wrapMode: Text.Wrap } } } } } }