From b0edccb80ece259cfc6749382cd03c753c0e1978 Mon Sep 17 00:00:00 2001 From: purian23 Date: Mon, 22 Jun 2026 12:56:45 -0400 Subject: [PATCH] fix(greeter): restore legacy remembered sessions by desktop id - Derive a desktop id from legacy remembered session paths - Match remembered sessions by desktop id before falling back to path --- .../qmlchecks/greeter_session_memory_test.go | 22 +++++++++++++++++++ quickshell/Modules/Greetd/GreeterContent.qml | 2 +- 2 files changed, 23 insertions(+), 1 deletion(-) create mode 100644 core/internal/qmlchecks/greeter_session_memory_test.go diff --git a/core/internal/qmlchecks/greeter_session_memory_test.go b/core/internal/qmlchecks/greeter_session_memory_test.go new file mode 100644 index 00000000..5a0f9864 --- /dev/null +++ b/core/internal/qmlchecks/greeter_session_memory_test.go @@ -0,0 +1,22 @@ +package qmlchecks + +import ( + "os" + "strings" + "testing" +) + +func TestGreeterRememberLastSessionFallsBackToDesktopID(t *testing.T) { + data, err := os.ReadFile("../../../quickshell/Modules/Greetd/GreeterContent.qml") + if err != nil { + t.Fatalf("read greeter QML: %v", err) + } + + content := string(data) + if !strings.Contains(content, "GreetdMemory.lastSessionDesktopId || desktopIdFromPath(GreetdMemory.lastSessionId)") { + t.Fatalf("remembered greeter sessions should derive a desktop id from legacy absolute session paths") + } + if !strings.Contains(content, "GreeterState.sessionDesktopIds[i] === savedDesktopId") { + t.Fatalf("remembered greeter sessions should match current sessions by desktop id") + } +} diff --git a/quickshell/Modules/Greetd/GreeterContent.qml b/quickshell/Modules/Greetd/GreeterContent.qml index a1fa37ef..c8abf5c1 100644 --- a/quickshell/Modules/Greetd/GreeterContent.qml +++ b/quickshell/Modules/Greetd/GreeterContent.qml @@ -1903,7 +1903,7 @@ Item { return; const savedSession = GreetdSettings.rememberLastSession ? GreetdMemory.lastSessionId : ""; - const savedDesktopId = GreetdSettings.rememberLastSession ? GreetdMemory.lastSessionDesktopId : ""; + const savedDesktopId = GreetdSettings.rememberLastSession ? (GreetdMemory.lastSessionDesktopId || desktopIdFromPath(GreetdMemory.lastSessionId)) : ""; if ((savedSession || savedDesktopId) && GreetdSettings.rememberLastSession) { for (var i = 0; i < GreeterState.sessionPaths.length; i++) { if ((savedDesktopId && GreeterState.sessionDesktopIds[i] === savedDesktopId) || (savedSession && GreeterState.sessionPaths[i] === savedSession)) {