I'm really struggling to find the correct behaviour here. What I know:
- man utmp shows:
char    ut_line[UT_LINESIZE]; /* Device name of tty - "/dev/" */
- GDM 2.20 only put the tty into this field
- GDM git does:
        /*
         * Set ut_line to the device name associated with this display
         * but remove the "/dev/" prefix.  If no device, then use the
         * $DISPLAY value.
         */
        if (display_device != NULL
            && g_str_has_prefix (display_device, "/dev/")) {
                strncpy (u->ut_line,
                         display_device + strlen ("/dev/"),
                         sizeof (u->ut_line));
        } else if (x11_display_name != NULL) {
                strncpy (u->ut_line,
                         x11_display_name,
                         sizeof (u->ut_line));
        }
- 'w' (the version in procps anyway) does:
                if (*u->ut_line == ':')
                        /* idle unknown for xdm logins */
                        printf(" ?xdm? ");
- xdm (1.1.11) doesn't set ut_line at all.
- AccountsService only stores ut_line and ut_tv (the timestamp) as a login 
record.
- gnome-control-center checks the history via AccountsService and checks if 
ut_line has the prefix ":" or "tty"

So while this clearly wasn't intended when utmp/wtmp was designed it
seems everyone is using ut_line with ttyN for text logins and :n for X
logins. That suggests we should revert the patch in LightDM.

I haven't been able to get GDM to work on my machine, can someone
confirm the output of w in a modern GDM?

-- 
You received this bug notification because you are a member of Ubuntu
Touch seeded packages, which is subscribed to lightdm in Ubuntu.
https://bugs.launchpad.net/bugs/1380364

Title:
  lightdm writes XDISPLAY instead of tty device name to utmp record

Status in Light Display Manager:
  Fix Released
Status in Light Display Manager 1.10 series:
  New
Status in Light Display Manager 1.14 series:
  New
Status in Light Display Manager 1.16 series:
  New
Status in lightdm package in Ubuntu:
  Fix Released

Bug description:
  Until now, I've been using good old gdm-2.20.11 and wanted to switch
  to lightdm-1.12.1. If you list users logged in via the 'w' or 'who'
  command, it shows you who is logged in and what they are doing.
  Especially, on which tty. Example:

  USER     TTY        LOGIN@   IDLE   JCPU   PCPU WHAT
  user    tty9      03Oct14 16days  1:52m  0.01s /bin/sh /etc/xdg/xfce4/xinitrc 
-- /etc/X11/xinit/xserverrc

  Also, 'who' gives this information:
  user    tty9         Oct  3 22:34 (:20)

  However, lightdm does not follow that tradition. Instead, it prints :0
  instead of the actual tty, and something weird for other values (like
  ?xdm? instead of the idle value etc.)

  'w':
  USER     TTY        LOGIN@   IDLE   JCPU   PCPU WHAT
  user    :0        19:50   ?xdm?  23.82s  0.01s /bin/sh /etc/xdg/xfce4/xinitrc 
-- /etc/X11/xinit/xserverrc

  Note: :0 is not tty, it is DISPLAY env.

  'who':
  user    :0           2014-10-12 19:50 (:0)

  The same for this one. I wonder, is this a bug (to me it seems so,
  because for every other program the correct values are reported)?

  It is a problem for me, because I have written scripts for automation
  etc. that parse w and who output to determine which tty is in use by
  which DISPLAY.

To manage notifications about this bug go to:
https://bugs.launchpad.net/lightdm/+bug/1380364/+subscriptions

-- 
Mailing list: https://launchpad.net/~touch-packages
Post to     : touch-packages@lists.launchpad.net
Unsubscribe : https://launchpad.net/~touch-packages
More help   : https://help.launchpad.net/ListHelp

Reply via email to