import QtQuick import QtQuick.Layouts import Quickshell import Quickshell.Widgets import Quickshell.Services.Notifications import "../.." Rectangle { required property var notification radius: 5; color: ShellGlobals.colors.bar; border.color: notificationArea.containsMouse ? ShellGlobals.colors.highlight : ShellGlobals.colors.light; border.width: 2; width: parent.width; height: column.implicitHeight + 20; MouseArea { id: notificationArea; hoverEnabled: true; anchors.fill: parent; } ColumnLayout { id: column; spacing: 5; anchors { fill: parent; margins: 10; } RowLayout { spacing: 5; Layout.fillWidth: true; IconImage { visible: notification.appIcon == null; source: Qt.resolvedUrl(notification.appIcon); implicitSize: 25; } Text { id: summaryText text: notification.summary color: ShellGlobals.colors.text font.pointSize: 14 font.bold: true wrapMode: Text.Wrap; Layout.fillWidth: true Layout.alignment: Qt.AlignBottom; } Item { width: 16; height: 16; Layout.alignment: Qt.AlighRight | Qt.AlignTop; Rectangle { color: "#FF474D"; radius: 5; visible: closeButtonArea.containsMouse; anchors.fill: parent; } MouseArea { id: closeButtonArea; hoverEnabled: true; anchors.fill: parent; onPressed: { notification.dismiss(); } } IconImage { source: "image://icon/window-close"; implicitSize: 28; anchors.centerIn: parent; } } } RowLayout { Text { id: bodyText text: notification.body color: ShellGlobals.colors.text font.pointSize: 11; wrapMode: Text.Wrap Layout.fillWidth: true } IconImage { visible: notification.image != null; source: Qt.resolvedUrl(notification.image); implicitSize: 25; } Layout.fillWidth: true; } } }