From 4706f2c86a9aa45876facae5358ca38a3026fef3 Mon Sep 17 00:00:00 2001 From: Aargh Rai Date: Sun, 19 Jul 2026 12:02:06 +0530 Subject: no mako needed, implemented a simple notification system in qs --- quickshell/NotificationOverlay.qml | 121 +++++++++++++++++++++++++++++++++++++ quickshell/shell.qml | 2 + 2 files changed, 123 insertions(+) create mode 100644 quickshell/NotificationOverlay.qml (limited to 'quickshell') diff --git a/quickshell/NotificationOverlay.qml b/quickshell/NotificationOverlay.qml new file mode 100644 index 0000000..3a0dfed --- /dev/null +++ b/quickshell/NotificationOverlay.qml @@ -0,0 +1,121 @@ +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: true + 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 = 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 + } + } + } + } + } +} diff --git a/quickshell/shell.qml b/quickshell/shell.qml index 369a87c..484656f 100644 --- a/quickshell/shell.qml +++ b/quickshell/shell.qml @@ -218,6 +218,8 @@ ShellRoot { } } + NotificationOverlay {} + Timer { interval: 1000 * 60 * 30 running: true -- cgit v1.2.3