latch lock screen animations after first wave completes

This commit is contained in:
Damocles 2026-04-18 11:43:34 +02:00
parent 570000f09a
commit a7d104df64
3 changed files with 23 additions and 5 deletions

View file

@ -10,8 +10,12 @@ Item {
readonly property real _fontSize: Math.max(48, screenHeight * 0.28)
// Appear as wave reaches the clock (left edge)
readonly property real _progress: Math.max(0, Math.min(1, wavePhase / 300)) * unlockFade
// Appear as wave reaches the clock (left edge), latch once fully revealed
property bool _revealed: false
on_RawProgressChanged: if (_rawProgress >= 1)
_revealed = true
readonly property real _rawProgress: Math.max(0, Math.min(1, wavePhase / 300))
readonly property real _progress: (_revealed ? 1 : _rawProgress) * unlockFade
opacity: _progress
property real _slideX: (1 - _progress) * -80

View file

@ -28,13 +28,23 @@ WlSessionLockSurface {
anchors.fill: parent
opacity: _unlockFade
layer.enabled: true
property bool _revealed: false
layer.enabled: !_revealed
layer.effect: ShaderEffect {
property real uPhase: _hexWave.wavePhase
property real uWidth: root.width
fragmentShader: Quickshell.shellPath("modules/reveal_mask.frag.qsb")
}
Connections {
target: _hexWave
function onWavePhaseChanged() {
if (!parent._revealed && _hexWave.wavePhase >= root.width)
parent._revealed = true;
}
}
// Blurred screenshot
ScreencopyView {
anchors.fill: parent

View file

@ -12,8 +12,12 @@ Item {
property real screenWidth: 0
property real unlockFade: 1
// Fly in when wave exits the right edge
readonly property real _progress: (screenWidth > 0 ? Math.max(0, Math.min(1, (wavePhase - screenWidth) / 500)) : 0) * unlockFade
// Fly in when wave exits the right edge, latch once fully revealed
property bool _revealed: false
on_RawProgressChanged: if (_rawProgress >= 1)
_revealed = true
readonly property real _rawProgress: screenWidth > 0 ? Math.max(0, Math.min(1, (wavePhase - screenWidth) / 500)) : 0
readonly property real _progress: (_revealed ? 1 : _rawProgress) * unlockFade
opacity: _progress
property real _slideX: (1 - _progress) * 80