--- a/daemon/gdm-local-display-factory.c +++ b/daemon/gdm-local-display-factory.c @@ -552,8 +552,10 @@ on_display_status_changed (GdmDisplay * ensures we get a new login screen when the user logs out, * if there isn't one. */ + g_debug ("GdmLocalDisplayFactory: session_class = %s active_vt = %u", session_class, factory->active_vt); if (is_local && - (g_strcmp0 (session_class, "greeter") != 0 || factory->active_vt == GDM_INITIAL_VT)) { + (g_strcmp0 (session_class, "greeter") != 0 || factory->active_vt == GDM_INITIAL_VT + || factory->active_vt == 0)) { /* reset num failures */ factory->num_failures = 0; --- a/daemon/gdm-manager.c +++ b/daemon/gdm-manager.c @@ -1553,7 +1553,8 @@ on_display_status_changed (GdmDisplay *d } #endif - g_object_set_data (G_OBJECT (display), "gdm-user-session", NULL); + if (getenv ("GDM_DISABLE_USER_DISPLAY_SERVER") == NULL ) + g_object_set_data (G_OBJECT (display), "gdm-user-session", NULL); if (display == manager->automatic_login_display) { g_clear_weak_pointer (&manager->automatic_login_display);