From 76ef2469e876d6036c6a3bff2d9cdec2468db3cf Mon Sep 17 00:00:00 2001 From: LemmyCook Date: Tue, 9 Sep 2025 00:35:12 -0400 Subject: [PATCH] Shaders: path from root for easier maintenance + cleanup fallback icons --- Modules/Background/Background.qml | 8 ++++---- Modules/LockScreen/LockScreen.qml | 2 +- Modules/Notification/Notification.qml | 4 +--- Widgets/NIcon.qml | 2 +- Widgets/NImageCircled.qml | 16 +++++++++------- Widgets/NImageRounded.qml | 16 +++++++++------- 6 files changed, 25 insertions(+), 23 deletions(-) diff --git a/Modules/Background/Background.qml b/Modules/Background/Background.qml index 56d184a..61d4fa4 100644 --- a/Modules/Background/Background.qml +++ b/Modules/Background/Background.qml @@ -139,7 +139,7 @@ Variants { property real screenWidth: width property real screenHeight: height - fragmentShader: Qt.resolvedUrl("../../Shaders/qsb/wp_fade.frag.qsb") + fragmentShader: Qt.resolvedUrl(Quickshell.shellDir + "/Shaders/qsb/wp_fade.frag.qsb") } // Wipe transition shader @@ -164,7 +164,7 @@ Variants { property real screenWidth: width property real screenHeight: height - fragmentShader: Qt.resolvedUrl("../../Shaders/qsb/wp_wipe.frag.qsb") + fragmentShader: Qt.resolvedUrl(Quickshell.shellDir + "/Shaders/qsb/wp_wipe.frag.qsb") } // Disc reveal transition shader @@ -191,7 +191,7 @@ Variants { property real screenWidth: width property real screenHeight: height - fragmentShader: Qt.resolvedUrl("../../Shaders/qsb/wp_disc.frag.qsb") + fragmentShader: Qt.resolvedUrl(Quickshell.shellDir + "/Shaders/qsb/wp_disc.frag.qsb") } // Diagonal stripes transition shader @@ -218,7 +218,7 @@ Variants { property real screenWidth: width property real screenHeight: height - fragmentShader: Qt.resolvedUrl("../../Shaders/qsb/wp_stripes.frag.qsb") + fragmentShader: Qt.resolvedUrl(Quickshell.shellDir + "/Shaders/qsb/wp_stripes.frag.qsb") } // Animation for the transition progress diff --git a/Modules/LockScreen/LockScreen.qml b/Modules/LockScreen/LockScreen.qml index 2f96157..528736f 100644 --- a/Modules/LockScreen/LockScreen.qml +++ b/Modules/LockScreen/LockScreen.qml @@ -728,7 +728,7 @@ Loader { border.width: Math.max(1, Style.borderM * scaling) NIcon { - id: iconPower + id: iconPower anchors.centerIn: parent icon: "power" font.pointSize: Style.fontSizeXXXL * scaling diff --git a/Modules/Notification/Notification.qml b/Modules/Notification/Notification.qml index 96c719a..ab16610 100644 --- a/Modules/Notification/Notification.qml +++ b/Modules/Notification/Notification.qml @@ -205,14 +205,12 @@ Variants { Layout.fillWidth: true spacing: Style.marginM * scaling - // Avatar + // Image NImageCircled { - id: appAvatar Layout.preferredWidth: 40 * scaling Layout.preferredHeight: 40 * scaling Layout.alignment: Qt.AlignTop imagePath: model.image && model.image !== "" ? model.image : "" - fallbackIcon: "" borderColor: Color.transparent borderWidth: 0 visible: (model.image && model.image !== "") diff --git a/Widgets/NIcon.qml b/Widgets/NIcon.qml index a459e74..fedbaa0 100644 --- a/Widgets/NIcon.qml +++ b/Widgets/NIcon.qml @@ -8,7 +8,7 @@ Text { property string icon: defaultIcon text: { - if (Bootstrap.icons[icon] === undefined) { + if (icon === undefined || Bootstrap.icons[icon] === undefined) { Logger.warn("Icon", `"${icon}"`, "doesn't exist in the bootstrap font") Logger.callStack() return Bootstrap.icons[defaultIcon] diff --git a/Widgets/NImageCircled.qml b/Widgets/NImageCircled.qml index c93f6c4..61190ea 100644 --- a/Widgets/NImageCircled.qml +++ b/Widgets/NImageCircled.qml @@ -46,18 +46,20 @@ Rectangle { } property real imageOpacity: root.opacity - fragmentShader: Qt.resolvedUrl("../Shaders/qsb/circled_image.frag.qsb") + fragmentShader: Qt.resolvedUrl(Quickshell.shellDir + "/Shaders/qsb/circled_image.frag.qsb") supportsAtlasTextures: false blending: true } // Fallback icon - NIcon { - anchors.centerIn: parent - icon: fallbackIcon - font.pointSize: fallbackIconSize - visible: fallbackIcon !== undefined && fallbackIcon !== "" && (imagePath === undefined || imagePath === "") - z: 0 + Loader { + active: fallbackIcon !== undefined && fallbackIcon !== "" && (imagePath === undefined || imagePath === "") + sourceComponent: NIcon { + anchors.centerIn: parent + icon: fallbackIcon + font.pointSize: fallbackIconSize + z: 0 + } } } diff --git a/Widgets/NImageRounded.qml b/Widgets/NImageRounded.qml index 60c0160..b1950f3 100644 --- a/Widgets/NImageRounded.qml +++ b/Widgets/NImageRounded.qml @@ -57,7 +57,7 @@ Rectangle { property real itemHeight: root.height property real cornerRadius: root.radius property real imageOpacity: root.opacity - fragmentShader: Qt.resolvedUrl("../Shaders/qsb/rounded_image.frag.qsb") + fragmentShader: Qt.resolvedUrl(Quickshell.shellDir + "/Shaders/qsb/rounded_image.frag.qsb") // Qt6 specific properties - ensure proper blending supportsAtlasTextures: false @@ -72,12 +72,14 @@ Rectangle { } // Fallback icon - NIcon { - anchors.centerIn: parent - icon: fallbackIcon - font.pointSize: fallbackIconSize - visible: fallbackIcon !== undefined && fallbackIcon !== "" && (imagePath === undefined || imagePath === "") - z: 0 + Loader { + active: fallbackIcon !== undefined && fallbackIcon !== "" && (imagePath === undefined || imagePath === "") + sourceComponent: NIcon { + anchors.centerIn: parent + icon: fallbackIcon + font.pointSize: fallbackIconSize + z: 0 + } } }