diff --git a/quickshell/DMSShell.qml b/quickshell/DMSShell.qml index 3ec1b82f..30500b99 100644 --- a/quickshell/DMSShell.qml +++ b/quickshell/DMSShell.qml @@ -116,6 +116,12 @@ Item { fadeWindowLoader.item.cancelFade(); } } + + function onDismissFadeToLock() { + if (fadeWindowLoader.item) { + fadeWindowLoader.item.dismiss(); + } + } } } } diff --git a/quickshell/Modules/Lock/Lock.qml b/quickshell/Modules/Lock/Lock.qml index 1b06c690..c31b721f 100644 --- a/quickshell/Modules/Lock/Lock.qml +++ b/quickshell/Modules/Lock/Lock.qml @@ -60,6 +60,10 @@ Scope { function lock() { if (SettingsData.customPowerActionLock?.length > 0) { Quickshell.execDetached(["sh", "-c", SettingsData.customPowerActionLock]); + // The custom locker manages its own surface; DMS never engages + // WlSessionLock here, so isShellLocked stays false and the fade + // overlay would never be dismissed. Hand off by dismissing it now. + IdleService.dismissFadeToLock(); return; } if (shouldLock || pendingLock) diff --git a/quickshell/Services/IdleService.qml b/quickshell/Services/IdleService.qml index 46d9d2a6..4ececaf5 100644 --- a/quickshell/Services/IdleService.qml +++ b/quickshell/Services/IdleService.qml @@ -53,6 +53,7 @@ Singleton { signal lockRequested signal fadeToLockRequested signal cancelFadeToLock + signal dismissFadeToLock signal fadeToDpmsRequested signal cancelFadeToDpms signal requestMonitorOff