Files
monoshell/Widgets/Notification.qml
2026-02-26 16:18:06 -08:00

84 lines
2.1 KiB
QML

import Quickshell
import Quickshell.Widgets
import Quickshell.Services.Notifications
import QtQuick
import QtQuick.Controls
import QtQuick.Effects
Rectangle {
id: notifRect
required property var modelData
property bool exiting: false
width: parent?.width ?? 0
height: notifContent.childrenRect.height + 20
radius: 8
color: "#181818"
Rectangle {
antialiasing: true
color: "transparent"
anchors {
verticalCenter: parent.verticalCenter
left: parent.left
leftMargin: 12
}
radius: 8
width: 40
height: 40
Image {
id: notifIcon
anchors.fill: parent
source: modelData?.image ?? source
}
}
Column {
id: notifContent
anchors {
left: parent.left
right: parent.right
top: parent.top
topMargin: 10
leftMargin: 16 + (notifIcon.source == "" ? 0 : 44)
rightMargin: 16
}
spacing: 4
Text {
anchors {
left: parent.left
right: parent.right
}
color: "white"
font.family: "Comfortaa"
font.pixelSize: 16
text: modelData?.summary ?? text
elide: Text.ElideRight
wrapMode: Text.Wrap
maximumLineCount: 2
}
Text {
anchors {
left: parent.left
right: parent.right
}
color: "white"
font.family: "Comfortaa"
font.pixelSize: 12
text: modelData?.body ?? text
elide: Text.ElideRight
wrapMode: Text.Wrap
maximumLineCount: 4
}
}
Timer {
running: modelData?.expireTimeout > 0
interval: (modelData?.expireTimeout > 0) ? modelData?.expireTimeout : 0
onTriggered: modelData.tracked = false
}
TapHandler {
acceptedButtons: Qt.MiddleButton
onTapped: modelData.tracked = false
}
}