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)) {