From b8b54825d55f65897cdc4e7c5f4d28e0f50ecde1 Mon Sep 17 00:00:00 2001 From: Ly-sec Date: Mon, 29 Sep 2025 14:20:15 +0200 Subject: [PATCH] SessionMenu: move lockAndSuspend to CompositorService --- Modules/SessionMenu/SessionMenu.qml | 5 +---- Services/CompositorService.qml | 12 ++++++++++++ 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/Modules/SessionMenu/SessionMenu.qml b/Modules/SessionMenu/SessionMenu.qml index 05b92b68..885b43ed 100644 --- a/Modules/SessionMenu/SessionMenu.qml +++ b/Modules/SessionMenu/SessionMenu.qml @@ -103,10 +103,7 @@ NPanel { } break case "lockAndSuspend": - if (!lockScreen.active) { - lockScreen.active = true - } - CompositorService.suspend() + CompositorService.lockAndSuspend() break case "suspend": CompositorService.suspend() diff --git a/Services/CompositorService.qml b/Services/CompositorService.qml index d2064350..1391ea3a 100644 --- a/Services/CompositorService.qml +++ b/Services/CompositorService.qml @@ -167,4 +167,16 @@ Singleton { function suspend() { Quickshell.execDetached(["systemctl", "suspend"]) } + + function lockAndSuspend() { + try { + if (PanelService && PanelService.lockScreen && !PanelService.lockScreen.active) { + PanelService.lockScreen.active = true + } + } catch (e) { + Logger.warn("Compositor", "Failed to activate lock screen before suspend: " + e) + } + // Queue suspend to the next event loop cycle to allow lock UI to render + Qt.callLater(suspend) + } }