From 57746ffc9ecf02bc1b8dab6154a3b331767b7b6a Mon Sep 17 00:00:00 2001 From: Zacharias-Brohn Date: Tue, 18 Nov 2025 00:02:52 +0100 Subject: [PATCH] **shadows** update --- Effects/ShadowRect.qml | 29 ++++++ Modules/Launcher.qml | 24 +---- Modules/NotifGroupRepeater.qml | 28 +++-- Modules/NotificationCenter.qml | 7 ++ Modules/TrackedNotification.qml | 178 +++++++++++++++++--------------- Wallpaper.qml | 1 + 6 files changed, 152 insertions(+), 115 deletions(-) create mode 100644 Effects/ShadowRect.qml diff --git a/Effects/ShadowRect.qml b/Effects/ShadowRect.qml new file mode 100644 index 0000000..883de43 --- /dev/null +++ b/Effects/ShadowRect.qml @@ -0,0 +1,29 @@ +import QtQuick +import QtQuick.Effects + +Item { + id: root + property real radius + Rectangle { + id: shadowRect + anchors.fill: root + radius: root.radius + layer.enabled: true + color: "black" + visible: false + } + + MultiEffect { + id: effects + source: shadowRect + anchors.fill: shadowRect + shadowBlur: 2.0 + shadowEnabled: true + shadowOpacity: 1 + shadowColor: "black" + maskSource: shadowRect + maskEnabled: true + maskInverted: true + autoPaddingEnabled: true + } +} diff --git a/Modules/Launcher.qml b/Modules/Launcher.qml index aa3dba0..53e021a 100644 --- a/Modules/Launcher.qml +++ b/Modules/Launcher.qml @@ -7,6 +7,7 @@ import QtQuick.Effects import QtQuick.Layouts import qs.Config import qs.Helpers +import qs.Effects Scope { id: root @@ -50,34 +51,15 @@ Scope { } } - // mask: Region { item: backgroundRect } - - Rectangle { - id: shadowRect + ShadowRect { + id: effects anchors { top: appListRect.top bottom: backgroundRect.bottom left: appListRect.left right: appListRect.right } - layer.enabled: true radius: 8 - color: "black" - visible: false - } - - MultiEffect { - id: effects - source: shadowRect - anchors.fill: shadowRect - shadowBlur: 2.0 - shadowEnabled: true - shadowOpacity: 1 - shadowColor: "black" - maskSource: shadowRect - maskEnabled: true - maskInverted: true - autoPaddingEnabled: true } Rectangle { diff --git a/Modules/NotifGroupRepeater.qml b/Modules/NotifGroupRepeater.qml index 9597303..f7ad940 100644 --- a/Modules/NotifGroupRepeater.qml +++ b/Modules/NotifGroupRepeater.qml @@ -21,7 +21,7 @@ Repeater { property bool previewHidden: groupColumn.shouldShow && index > 0 width: parent.width - height: contentColumn.height + 20 + height: contentColumn.height + 15 color: Config.baseBgColor border.color: "#555555" border.width: 1 @@ -107,19 +107,25 @@ Repeater { } } - Behavior on height { - Anim { - duration: MaterialEasing.expressiveDefaultSpatialTime - easing.bezierCurve: MaterialEasing.expressiveDefaultSpatial - } - } + // Behavior on height { + // Anim { + // duration: MaterialEasing.expressiveDefaultSpatialTime + // easing.bezierCurve: MaterialEasing.expressiveDefaultSpatial + // } + // } Column { id: contentColumn - anchors.centerIn: parent - width: parent.width - 20 + anchors.top: parent.top + anchors.left: parent.left + anchors.right: parent.right + anchors.leftMargin: 10 + anchors.rightMargin: 10 + anchors.topMargin: 5 + // width: parent.width - 20 spacing: 10 RowLayout { + id: infoRow width: parent.width spacing: 10 @@ -135,7 +141,6 @@ Repeater { ColumnLayout { Layout.fillWidth: true Layout.fillHeight: true - spacing: 2 Text { text: groupHeader.modelData.summary @@ -144,6 +149,7 @@ Repeater { font.pointSize: 16 elide: Text.ElideRight Layout.fillWidth: true + Layout.alignment: Qt.AlignTop } Text { @@ -161,7 +167,7 @@ Repeater { } Text { - text: groupColumn.notifications.length > 1 ? ( groupColumn.isExpanded ? "" : "(" + groupColumn.notifications.length + ")" ) : "" + text: groupHeader.modelData.timeStr font.pointSize: 10 color: "#666666" Layout.alignment: Qt.AlignRight | Qt.AlignVCenter diff --git a/Modules/NotificationCenter.qml b/Modules/NotificationCenter.qml index 3e0015a..25bdfd2 100644 --- a/Modules/NotificationCenter.qml +++ b/Modules/NotificationCenter.qml @@ -4,10 +4,12 @@ import Quickshell.Io import Quickshell.Wayland import QtQuick.Layouts import QtQuick.Controls.FluentWinUI3 +import QtQuick.Effects import QtQuick import qs.Config import qs.Helpers import qs.Daemons +import qs.Effects PanelWindow { id: root @@ -94,6 +96,11 @@ PanelWindow { bar: root.bar } + ShadowRect { + anchors.fill: backgroundRect + radius: backgroundRect.radius + } + Rectangle { id: backgroundRect y: 10 diff --git a/Modules/TrackedNotification.qml b/Modules/TrackedNotification.qml index 86421d0..323d427 100644 --- a/Modules/TrackedNotification.qml +++ b/Modules/TrackedNotification.qml @@ -7,6 +7,7 @@ import QtQuick import qs.Config import qs.Daemons import qs.Helpers +import qs.Effects PanelWindow { id: root @@ -106,98 +107,109 @@ PanelWindow { NotifRegion {} } - delegate: Rectangle { - id: backgroundRect - required property NotifServer.Notif modelData + delegate: Item { + id: rootItem implicitWidth: 400 implicitHeight: contentLayout.childrenRect.height + 16 - color: Config.baseBgColor - border.color: "#555555" - radius: 8 + required property NotifServer.Notif modelData - Component.onCompleted: { - root.notifRegions.push( notifRegion.createObject(root, { item: backgroundRect })); - } - - Column { - id: contentLayout - anchors.left: parent.left - anchors.right: parent.right - anchors.verticalCenter: parent.verticalCenter - anchors.margins: 10 - spacing: 8 - RowLayout { - spacing: 12 - IconImage { - source: backgroundRect.modelData.image - Layout.preferredWidth: 48 - Layout.preferredHeight: 48 - Layout.alignment: Qt.AlignHCenter | Qt.AlignLeft - visible: backgroundRect.modelData.image !== "" - } - - ColumnLayout { - Layout.fillWidth: true - Layout.fillHeight: true - Layout.leftMargin: 0 - Layout.alignment: Qt.AlignVCenter | Qt.AlignLeft - - Text { - text: backgroundRect.modelData.appName - color: "white" - font.bold: true - font.pointSize: 14 - elide: Text.ElideRight - wrapMode: Text.NoWrap - Layout.fillWidth: true - } - - Text { - text: backgroundRect.modelData.summary - color: "white" - font.pointSize: 12 - font.bold: true - elide: Text.ElideRight - wrapMode: Text.WordWrap - Layout.fillWidth: true - } - - } - } - Text { - text: backgroundRect.modelData.body - color: "#dddddd" - font.pointSize: 14 - elide: Text.ElideRight - wrapMode: Text.WordWrap - maximumLineCount: 4 - width: parent.width - } + ShadowRect { + anchors.fill: backgroundRect + radius: backgroundRect.radius } Rectangle { - anchors.right: parent.right - anchors.top: parent.top - anchors.rightMargin: 6 - anchors.topMargin: 6 - width: 18 - height: 18 - color: closeArea.containsMouse ? "#FF6077" : "transparent" - radius: 9 + id: backgroundRect + implicitWidth: 400 + implicitHeight: contentLayout.childrenRect.height + 16 + color: Config.baseBgColor + border.color: "#555555" + radius: 8 - Text { - anchors.centerIn: parent - text: "✕" - color: closeArea.containsMouse ? "white" : "#888888" - font.pointSize: 12 + Component.onCompleted: { + root.notifRegions.push( notifRegion.createObject(root, { item: backgroundRect })); } - MouseArea { - id: closeArea - anchors.fill: parent - hoverEnabled: true - onClicked: { - backgroundRect.modelData.close(); + Column { + id: contentLayout + anchors.left: parent.left + anchors.right: parent.right + anchors.verticalCenter: parent.verticalCenter + anchors.margins: 10 + spacing: 8 + RowLayout { + spacing: 12 + IconImage { + source: rootItem.modelData.image + Layout.preferredWidth: 48 + Layout.preferredHeight: 48 + Layout.alignment: Qt.AlignHCenter | Qt.AlignLeft + visible: rootItem.modelData.image !== "" + } + + ColumnLayout { + Layout.fillWidth: true + Layout.fillHeight: true + Layout.leftMargin: 0 + Layout.alignment: Qt.AlignVCenter | Qt.AlignLeft + + Text { + text: rootItem.modelData.appName + color: "white" + font.bold: true + font.pointSize: 14 + elide: Text.ElideRight + wrapMode: Text.NoWrap + Layout.fillWidth: true + } + + Text { + text: rootItem.modelData.summary + color: "white" + font.pointSize: 12 + font.bold: true + elide: Text.ElideRight + wrapMode: Text.WordWrap + Layout.fillWidth: true + } + + } + } + Text { + text: rootItem.modelData.body + color: "#dddddd" + font.pointSize: 14 + elide: Text.ElideRight + wrapMode: Text.WordWrap + maximumLineCount: 4 + width: parent.width + } + } + + Rectangle { + anchors.right: parent.right + anchors.top: parent.top + anchors.rightMargin: 6 + anchors.topMargin: 6 + width: 18 + height: 18 + color: closeArea.containsMouse ? "#FF6077" : "transparent" + radius: 9 + + Text { + anchors.centerIn: parent + text: "✕" + color: closeArea.containsMouse ? "white" : "#888888" + font.pointSize: 12 + } + + MouseArea { + id: closeArea + anchors.fill: parent + hoverEnabled: true + onClicked: { + rootItem.modelData.close(); + } } } } diff --git a/Wallpaper.qml b/Wallpaper.qml index 144cd62..726317c 100644 --- a/Wallpaper.qml +++ b/Wallpaper.qml @@ -13,6 +13,7 @@ Scope { screen: modelData WlrLayershell.exclusionMode: ExclusionMode.Ignore WlrLayershell.layer: WlrLayer.Bottom + color: "transparent" anchors { top: true