From 2a652d549a56b74cdf5134ffee7d84ef5e96823f Mon Sep 17 00:00:00 2001 From: 2 * r + 2 * t <61896496+soramanew@users.noreply.github.com> Date: Sun, 22 Jun 2025 20:50:39 +1000 Subject: feat: lock screen --- modules/lock/LockSurface.qml | 97 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 97 insertions(+) create mode 100644 modules/lock/LockSurface.qml (limited to 'modules/lock/LockSurface.qml') diff --git a/modules/lock/LockSurface.qml b/modules/lock/LockSurface.qml new file mode 100644 index 0000000..1b98c2c --- /dev/null +++ b/modules/lock/LockSurface.qml @@ -0,0 +1,97 @@ +import "root:/widgets" +import "root:/services" +import "root:/config" +import Quickshell.Wayland +import QtQuick +import QtQuick.Effects + +WlSessionLockSurface { + id: root + + required property WlSessionLock lock + + property bool locked + + function unlock(): void { + locked = false; + background.opacity = 0; + animDelay.start(); + } + + Component.onCompleted: locked = true + + color: "transparent" + + Timer { + id: animDelay + + interval: Appearance.anim.durations.large + onTriggered: root.lock.locked = false + } + + ScreencopyView { + id: screencopy + + anchors.fill: parent + captureSource: root.screen + visible: false + } + + MultiEffect { + id: background + + anchors.fill: parent + + source: screencopy + autoPaddingEnabled: false + blurEnabled: true + blur: root.locked ? 1 : 0 + blurMax: 64 + blurMultiplier: 1 + + Behavior on opacity { + Anim {} + } + + Behavior on blur { + Anim {} + } + } + + Backgrounds { + id: backgrounds + + locked: root.locked + visible: false + } + + MultiEffect { + anchors.fill: source + source: backgrounds + shadowEnabled: true + blurMax: 15 + shadowColor: Qt.alpha(Colours.palette.m3shadow, 0.7) + } + + Clock { + anchors.horizontalCenter: parent.horizontalCenter + anchors.bottom: parent.top + anchors.bottomMargin: -backgrounds.clockBottom + + locked: root.locked + } + + Input { + anchors.horizontalCenter: parent.horizontalCenter + anchors.top: parent.bottom + anchors.topMargin: -backgrounds.inputTop + + lock: root + } + + component Anim: NumberAnimation { + duration: Appearance.anim.durations.large + easing.type: Easing.BezierSpline + easing.bezierCurve: Appearance.anim.curves.standard + } +} -- cgit v1.2.3-freya