diff --git a/components/effects/OpacityMask.qml b/components/effects/OpacityMask.qml new file mode 100644 index 00000000..22e42496 --- /dev/null +++ b/components/effects/OpacityMask.qml @@ -0,0 +1,9 @@ +import Quickshell +import QtQuick + +ShaderEffect { + required property Item source + required property Item maskSource + + fragmentShader: Qt.resolvedUrl(`${Quickshell.shellDir}/assets/shaders/opacitymask.frag.qsb`) +} diff --git a/modules/bar/components/workspaces/SpecialWorkspaces.qml b/modules/bar/components/workspaces/SpecialWorkspaces.qml index 61ec7238..ff2652e0 100644 --- a/modules/bar/components/workspaces/SpecialWorkspaces.qml +++ b/modules/bar/components/workspaces/SpecialWorkspaces.qml @@ -18,11 +18,8 @@ Item { readonly property string activeSpecial: (Config.bar.workspaces.perMonitorWorkspaces ? monitor : Hypr.focusedMonitor)?.lastIpcObject.specialWorkspace.name ?? "" layer.enabled: true - layer.effect: ShaderEffect { - required property Item source - readonly property Item maskSource: mask - - fragmentShader: Qt.resolvedUrl(`${Quickshell.shellDir}/assets/shaders/opacitymask.frag.qsb`) + layer.effect: OpacityMask { + maskSource: mask } Item { diff --git a/modules/lock/Media.qml b/modules/lock/Media.qml index 79bd2859..b7e58bbc 100644 --- a/modules/lock/Media.qml +++ b/modules/lock/Media.qml @@ -4,7 +4,6 @@ import qs.components import qs.components.effects import qs.services import qs.config -import Quickshell import QtQuick import QtQuick.Layouts @@ -27,11 +26,8 @@ Item { sourceSize.height: height layer.enabled: true - layer.effect: ShaderEffect { - required property Item source - readonly property Item maskSource: mask - - fragmentShader: Qt.resolvedUrl(`${Quickshell.shellDir}/assets/shaders/opacitymask.frag.qsb`) + layer.effect: OpacityMask { + maskSource: mask } opacity: status === Image.Ready ? 1 : 0