#include #include #include #include static int find_session_nr (void) { char **sessions = NULL; char *session_id; unsigned session_vtnr; const char *session_vtnr_env; gboolean is_tty = FALSE; int ret, i; ret = sd_pid_get_session (0, &session_id); if (ret == 0 && session_id != NULL) { ret = sd_session_get_vt (session_id, &session_vtnr); printf("VT %d\n", session_vtnr); char *display = NULL; ret = sd_session_get_tty (session_id, &display); printf("TTY %s\n", display); display = NULL; ret = sd_session_get_display (session_id, &display); printf("display %s\n", display); display = NULL; ret = sd_session_get_desktop (session_id, &display); printf("desktop %s\n", display); display = NULL; ret = sd_session_get_class (session_id, &display); printf("class %s\n", display); display = NULL; ret = sd_session_get_type (session_id, &display); printf("type %s\n", display); display = NULL; ret = sd_session_get_seat (session_id, &display); printf("seat %s\n", display); free (session_id); if (ret == 0) goto out; } g_strfreev (sessions); session_vtnr_env = g_getenv ("XDG_VTNR"); /* The string should be freeable */ session_vtnr = atoi (session_vtnr_env); goto out; return -1; out: return session_vtnr; } int main(void) { printf("%d\n", find_session_nr()); }