From 6b64c8a91804058fea99ed6944753758ee92c543 Mon Sep 17 00:00:00 2001 From: 2 * r + 2 * t <61896496+soramanew@users.noreply.github.com> Date: Sat, 10 May 2025 17:31:04 +1000 Subject: feat: basic notifications Also fix pixel issue with notif area background Add more log rules to run script --- services/Notifs.qml | 76 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 76 insertions(+) create mode 100644 services/Notifs.qml (limited to 'services') diff --git a/services/Notifs.qml b/services/Notifs.qml new file mode 100644 index 0000000..965e4f3 --- /dev/null +++ b/services/Notifs.qml @@ -0,0 +1,76 @@ +pragma Singleton + +import "root:/config" +import Quickshell +import Quickshell.Services.Notifications +import QtQuick + +Singleton { + id: root + + readonly property list list: [] + + NotificationServer { + id: server + + keepOnReload: false + actionsSupported: true + bodyHyperlinksSupported: true + bodyImagesSupported: true + bodyMarkupSupported: true + imageSupported: true + + onNotification: notif => { + notif.tracked = true; + + root.list.push(notifComp.createObject(root, { + popup: true, + notification: notif + })); + } + } + + component Notif: QtObject { + id: notif + + property bool popup + readonly property date time: new Date() + readonly property string timeStr: { + const diff = Time.date.getTime() - time.getTime(); + const m = Math.floor(diff / 60000); + const h = Math.floor(m / 60); + + if (h < 1 && m < 1) + return "now"; + if (h < 1) + return `${m}m`; + return `${h}h`; + } + + required property Notification notification + readonly property string summary: notification.summary + readonly property string body: notification.body + readonly property string appIcon: notification.appIcon + readonly property string image: notification.image + + readonly property Timer timer: Timer { + running: true + interval: notif.notification.expireTimeout > 0 ? notif.notification.expireTimeout : NotifsConfig.defaultExpireTimeout + onTriggered: notif.popup = false + } + + readonly property Connections conn: Connections { + target: notif.notification + + function onClosed(): void { + notif.destroy(); + } + } + } + + Component { + id: notifComp + + Notif {} + } +} -- cgit v1.2.3-freya