All of the mentioned programs have a
pts. The problem is not that your specified terminals don't have a pts device but that the information isn't recorded.
Why doesn't lxterminal or other terminals show up in
who retrieves it information from a
utmp file, typically
/var/run/utmp and is written to by programs themselves. In order to write an
utmp entry programs have to have access to the file which normal, standard applications like lxterm or urxvt don't have.
Allow access to
/var/run/utmp for applications
/var/run/utmp is not write-able for the normal user, i.e. programs can't create new entries as a malicious user could just overwrite the file or write fake entries.
On my system
/var/run/utmp has following permissions:
$ ls -l /var/run/utmp
-rw-rw-r-- 1 root utmp 3072 Jan 28 08:26 /var/run/utmp
that means in order to write to the file you have to have at least to be in the group.
The best solution to give permissions to programs for updating
/var/run/utmp is changing the permissions of the program so it can update the file. You can do this by setting the group of the executable to
utmp and set the
setgid flag which means it will set the group id from the file permissions, i.e.:
chgrp utmp /usr/bin/urxvt
chmod g+s /usr/bin/urxvt