From ecbb72390ab6bcd865037e3e1358967d10702597 Mon Sep 17 00:00:00 2001 From: end-4 <97237370+end-4@users.noreply.github.com> Date: Thu, 22 May 2025 15:44:28 +0200 Subject: [PATCH] fix notif popup not showing --- .../notificationPopup/NotificationPopup.qml | 169 +++++++++--------- .../modules/sidebarLeft/SidebarLeft.qml | 4 - .config/quickshell/services/Notifications.qml | 5 +- 3 files changed, 86 insertions(+), 92 deletions(-) diff --git a/.config/quickshell/modules/notificationPopup/NotificationPopup.qml b/.config/quickshell/modules/notificationPopup/NotificationPopup.qml index eda732275..e526a2769 100644 --- a/.config/quickshell/modules/notificationPopup/NotificationPopup.qml +++ b/.config/quickshell/modules/notificationPopup/NotificationPopup.qml @@ -12,101 +12,96 @@ import Quickshell.Hyprland Scope { id: notificationPopup - LazyLoader { - loading: true - PanelWindow { - id: root - visible: (Notifications.popupList.length > 0) - screen: Quickshell.screens.find(s => s.name === Hyprland.focusedMonitor?.name) + PanelWindow { + id: root + visible: (Notifications.popupList.length > 0) + screen: Quickshell.screens.find(s => s.name === Hyprland.focusedMonitor?.name) - WlrLayershell.namespace: "quickshell:notificationPopup" - WlrLayershell.layer: WlrLayer.Overlay - exclusiveZone: 0 + WlrLayershell.namespace: "quickshell:notificationPopup" + WlrLayershell.layer: WlrLayer.Overlay + exclusiveZone: 0 - anchors { - top: true - right: true - bottom: true + anchors { + top: true + right: true + bottom: true + } + + mask: Region { + item: listview.contentItem + } + + color: "transparent" + implicitWidth: Appearance.sizes.notificationPopupWidth + + ListView { // Scrollable window + id: listview + anchors.top: parent.top + anchors.bottom: parent.bottom + anchors.horizontalCenter: parent.horizontalCenter + implicitWidth: parent.width - Appearance.sizes.elevationMargin * 2 + + add: Transition { + animations: [ + Appearance.animation.elementMove.numberAnimation.createObject(this, { + properties: "opacity,scale", + from: 0, + to: 1, + }), + ] } - mask: Region { - item: listview.contentItem + addDisplaced: Transition { + animations: [ + Appearance.animation.elementMove.numberAnimation.createObject(this, { + property: "y", + }), + Appearance.animation.elementMove.numberAnimation.createObject(this, { + properties: "opacity,scale", + to: 1, + }), + ] + } + + displaced: Transition { + animations: [ + Appearance.animation.elementMove.numberAnimation.createObject(this, { + property: "y", + }), + ] + } + move: Transition { + animations: [ + Appearance.animation.elementMove.numberAnimation.createObject(this, { + property: "y", + }), + ] } - color: "transparent" - implicitWidth: Appearance.sizes.notificationPopupWidth - - ListView { // Scrollable window - id: listview - anchors.top: parent.top - anchors.bottom: parent.bottom - anchors.horizontalCenter: parent.horizontalCenter - implicitWidth: parent.width - Appearance.sizes.elevationMargin * 2 - - add: Transition { - animations: [ - Appearance.animation.elementMove.numberAnimation.createObject(this, { - properties: "opacity,scale", - from: 0, - to: 1, - }), - ] - } - - addDisplaced: Transition { - animations: [ - Appearance.animation.elementMove.numberAnimation.createObject(this, { - property: "y", - }), - Appearance.animation.elementMove.numberAnimation.createObject(this, { - properties: "opacity,scale", - to: 1, - }), - ] - } - - displaced: Transition { - animations: [ - Appearance.animation.elementMove.numberAnimation.createObject(this, { - property: "y", - }), - ] - } - move: Transition { - animations: [ - Appearance.animation.elementMove.numberAnimation.createObject(this, { - property: "y", - }), - ] - } - - remove: Transition { - animations: [ - Appearance.animation.elementMove.numberAnimation.createObject(this, { - property: "x", - to: listview.width, - }), - Appearance.animation.elementMove.numberAnimation.createObject(this, { - property: "opacity", - to: 0, - }) - ] - } - - model: ScriptModel { - values: Notifications.popupList.slice().reverse() - } - delegate: NotificationWidget { - required property var modelData - id: notificationWidget - popup: true - anchors.left: parent?.left - anchors.right: parent?.right - notificationObject: modelData - } + remove: Transition { + animations: [ + Appearance.animation.elementMove.numberAnimation.createObject(this, { + property: "x", + to: listview.width, + }), + Appearance.animation.elementMove.numberAnimation.createObject(this, { + property: "opacity", + to: 0, + }) + ] } + model: ScriptModel { + values: Notifications.popupList.slice().reverse() + } + delegate: NotificationWidget { + required property var modelData + id: notificationWidget + popup: true + anchors.left: parent?.left + anchors.right: parent?.right + notificationObject: modelData + } } } - } diff --git a/.config/quickshell/modules/sidebarLeft/SidebarLeft.qml b/.config/quickshell/modules/sidebarLeft/SidebarLeft.qml index 3acc6cb21..8a2d3e096 100644 --- a/.config/quickshell/modules/sidebarLeft/SidebarLeft.qml +++ b/.config/quickshell/modules/sidebarLeft/SidebarLeft.qml @@ -180,7 +180,6 @@ Scope { // Scope function toggle(): void { sidebarLoader.active = !sidebarLoader.active - if(sidebarLoader.active) Notifications.timeoutAll(); } function close(): void { @@ -189,7 +188,6 @@ Scope { // Scope function open(): void { sidebarLoader.active = true - if(sidebarLoader.active) Notifications.timeoutAll(); } } @@ -199,7 +197,6 @@ Scope { // Scope onPressed: { sidebarLoader.active = !sidebarLoader.active; - if(sidebarLoader.active) Notifications.timeoutAll(); } } @@ -209,7 +206,6 @@ Scope { // Scope onPressed: { sidebarLoader.active = true; - if(sidebarLoader.active) Notifications.timeoutAll(); } } diff --git a/.config/quickshell/services/Notifications.qml b/.config/quickshell/services/Notifications.qml index c2bcc1776..c2cdc9f76 100644 --- a/.config/quickshell/services/Notifications.qml +++ b/.config/quickshell/services/Notifications.qml @@ -2,6 +2,7 @@ pragma Singleton pragma ComponentBehavior: Bound import "root:/modules/common" +import "root:/" import QtQuick import Quickshell import Quickshell.Io @@ -13,6 +14,7 @@ Singleton { property var filePath: `${XdgDirectories.cache}/notifications/notifications.json` property var list: [] property var popupList: [] + property bool popupInhibited: GlobalStates?.sidebarRightOpen ?? false // Quickshell's notification IDs starts at 1 on each run, while saved notifications // can already contain higher IDs. This is for avoiding id collisions property int idOffset @@ -54,7 +56,8 @@ Singleton { "urgency": notification.urgency.toString(), } root.list = [...root.list, newNotifObject]; - root.popupList = [...root.popupList, newNotifObject]; + // console.log(root.popupInhibited) + if (!root.popupInhibited) root.popupList = [...root.popupList, newNotifObject]; root.notify(newNotifObject); notifFileView.setText(JSON.stringify(root.list, null, 2)) }