diff --git a/Common/Colors.qml b/Common/Colors.qml index acc71373..a9a3e3c5 100644 --- a/Common/Colors.qml +++ b/Common/Colors.qml @@ -148,20 +148,29 @@ Singleton { onStreamFinished: { const out = matugenCollector.text - if (!out.length) { + const startIndex = out.indexOf('{') + const endIndex = out.lastIndexOf('}') + let jsonStringOnly = "" + if (startIndex !== -1 && endIndex !== -1 && endIndex > startIndex) { + jsonStringOnly = out.substring(startIndex, endIndex + 1) + } + if (!jsonStringOnly.length) { ToastService.wallpaperErrorStatus = "error" - ToastService.showError("Wallpaper Processing Failed") + ToastService.showError("Wallpaper Processing Failed: Empty JSON extracted from matugen output.") return } try { - root.matugenJson = out - root.matugenColors = JSON.parse(out) + root.matugenJson = jsonStringOnly + root.matugenColors = JSON.parse(jsonStringOnly) root.colorsUpdated() generateAppConfigs() ToastService.clearWallpaperError() } catch (e) { ToastService.wallpaperErrorStatus = "error" - ToastService.showError("Wallpaper Processing Failed") + const stderr = matugenErr.text + const msg = "Wallpaper processing failed (JSON parse error after extraction)" + + (stderr ? `: ${stderr}` : ` with output: ${jsonStringOnly}`) + ToastService.showError(msg) } } } @@ -169,6 +178,16 @@ Singleton { stderr: StdioCollector { id: matugenErr } + + onExited: code => { + if (code !== 0) { + ToastService.wallpaperErrorStatus = "error" + const stderr = matugenErr.text + const msg = "Matugen command failed with exit code " + code + + (stderr ? `: ${stderr}` : ". No stderr output.") + ToastService.showError(msg) + } + } } function generateAppConfigs() { diff --git a/Modules/Lock/Lock.qml b/Modules/Lock/Lock.qml index b7d47fd9..efe6fbf8 100644 --- a/Modules/Lock/Lock.qml +++ b/Modules/Lock/Lock.qml @@ -13,6 +13,35 @@ Item { loader.activeAsync = true } + function checkLockedOnStartup() { + lockStateChecker.running = true + } + + Component.onCompleted: { + checkLockedOnStartup() + } + + Process { + id: lockStateChecker + command: ["sh", "-c", "loginctl show-session $(loginctl list-sessions --no-legend | awk '{print $1}' | head -1) --property=LockedHint"] + running: false + + onExited: (exitCode, exitStatus) => { + if (exitCode !== 0) { + console.warn("Failed to check session lock state, exit code:", exitCode) + } + } + + stdout: StdioCollector { + onStreamFinished: { + if (text.trim() === "LockedHint=yes") { + console.log("Session is locked on startup, activating lock screen") + loader.activeAsync = true + } + } + } + } + LazyLoader { id: loader