1
0
mirror of https://github.com/AvengeMedia/DankMaterialShell.git synced 2026-04-12 08:42:13 -04:00

feat(lockscreen): enable use of videos as screensaver in the lock screen (#1819)

* feat(lockscreen): enable use of videos as screensaver in the lock screen

* reducing debug logs

* feature becomes available only when QtMultimedia is available
This commit is contained in:
Augusto César Dias
2026-02-26 17:02:50 +01:00
committed by GitHub
parent 5d09acca4c
commit bd6ad53875
7 changed files with 370 additions and 25 deletions

View File

@@ -2,8 +2,9 @@ pragma ComponentBehavior: Bound
import QtQuick
import Quickshell.Wayland
import qs.Common
Rectangle {
FocusScope {
id: root
required property WlSessionLock lock
@@ -14,7 +15,17 @@ Rectangle {
signal passwordChanged(string newPassword)
signal unlockRequested
color: "transparent"
Keys.onPressed: event => {
if (videoScreensaver.active && videoScreensaver.inputEnabled) {
videoScreensaver.dismiss();
event.accepted = true;
}
}
Rectangle {
anchors.fill: parent
color: "transparent"
}
LockScreenContent {
id: lockContent
@@ -23,17 +34,38 @@ Rectangle {
demoMode: false
passwordBuffer: root.sharedPasswordBuffer
screenName: root.screenName
enabled: !videoScreensaver.active
focus: !videoScreensaver.active
opacity: videoScreensaver.active ? 0 : 1
onUnlockRequested: root.unlockRequested()
onPasswordBufferChanged: {
if (root.sharedPasswordBuffer !== passwordBuffer) {
root.passwordChanged(passwordBuffer);
}
}
Behavior on opacity {
NumberAnimation {
duration: 200
}
}
}
VideoScreensaver {
id: videoScreensaver
anchors.fill: parent
screenName: root.screenName
}
Component.onCompleted: forceActiveFocus()
onIsLockedChanged: {
if (isLocked) {
forceActiveFocus();
lockContent.resetLockState();
if (SettingsData.lockScreenVideoEnabled) {
videoScreensaver.start();
}
return;
}
lockContent.unlocking = false;