/* Add new entry if update did not work */
if (u == NULL) { g_debug ("Adding new utmp record"); pututxline (&session_record);
}
#elif defined(HAVE_LOGIN)
login (&session_record);
#endif
}
..."
So it seems it's somewhat that is not integrated with the system stack but that lightdm should be doing by itself on login
Ok, some pointers in case that's useful, gdm has code in gdm-session- record. c
void record_ login (GPid session_pid, SESSION_ RECORDS_ FILE); HAVE_UPDWTMPX) SESSION_ RECORDS_ FILE, &session_record); HAVE_UPDWTMP) SESSION_ RECORDS_ FILE, &session_record); HAVE_LOGWTMP) && defined( HAVE_UT_ UT_HOST) HAVE_UT_ UT_USER) record. ut_line, session_ record. ut_user, session_ record. ut_host) ; HAVE_UT_ UT_NAME) record. ut_line, session_ record. ut_name, session_ record. ut_host) ;
gdm_session_
...
/* Handle wtmp */
g_debug ("Writing wtmp session record to " GDM_NEW_
#if defined(
updwtmpx (GDM_NEW_
#elif defined(
updwtmp (GDM_NEW_
#elif defined(
#if defined(
logwtmp (session_
#elif defined(
logwtmp (session_
#endif
#endif
/* HAVE_GETUTXENT)
* Handle utmp
* Update if entry already exists
*/
#if defined(
setutxent ();
while ((u = getutxent ()) != NULL) {
( session_ record. ut_line != NULL &&
(strncmp (u->ut_line, session_ record. ut_line,
sizeof (u->ut_line)) == 0 ||
u->ut_ pid == session_ record. ut_pid) )) {
g_debug ("Updating existing utmp record");
pututxline (&session_record);
break;
if (u->ut_type == USER_PROCESS &&
}
}
endutxent ();
/* Add new entry if update did not work */
g_debug ("Adding new utmp record");
pututxline (&session_record);
if (u == NULL) {
}
#elif defined(HAVE_LOGIN)
login (&session_record);
#endif
}
..."
So it seems it's somewhat that is not integrated with the system stack but that lightdm should be doing by itself on login