Easy explanation

$ w

First line, in man pages referred to as header shows the same stuff as uptime command.

07:04:10 up 1:10, 3 users, load average: 0.07, 0.13, 0.22Other lines show descriptive information on users logged on

Username

Shows username of user logged on.

TTY 

The way how users are logged on through terminal, TTY is short for controlling terminal, if you see in you w command this output, it means that user mike is logged on through controlling terminal 7 as a gnome-session, this also tells you that when you are switched in other terminal or you have opened more terminals, that if you press Ctrl + Alt + F7, you will be switched the tty7 – the 7 is for F7.

Computer #1 (home PC)

USER TTY  FROM              LOGIN@   IDLE   JCPU   PCPU  WHAT
mike tty7                   05:54    1:09m  2:43   0.27s gnome-session -

Other types of terminal is pts, this is short for Pseudo Terminal Slave, there is also ptmx that is pseudo terminal master, but I have not seen that in w window yet. It basically means user is connected to this computer using remote session.

Computer #1 (home PC)

USER TTY  FROM              LOGIN@   IDLE   JCPU   PCPU  WHAT
mike tty7                   05:54    1:09m  2:43   0.27s gnome-session -
mike pts/0  :0              05:58   26.00s  0.06s  0.06s ssh -ipts/0

tells you, that user mike is connected to other terminal using remote session, basically I have a opened terminal with ssh session to another computer, From :0 means that it is me, my computer that I am running this command from.

Now if we look on the computer, that I am connected to with this remote session, I enter w command there and I see:

Computer #2 (remote server)

07:38:34 up 1:31, 2 users, load average: 1.49, 1.41, 1.03
USER     TTY      FROM              LOGIN@   IDLE   JCPU   PCPU  WHAT
ubuntu   pts/0    chello456456456   06:09    1:30   0.57s  0.57s -bash
ubuntu   pts/1    chello456456456   07:38    2.00s  0.47s  0.00s w

Note that it says two users, it is just me, one person, but this is the way it does report, first line is me connected remotely from my other computer to this one using SSH, under WHAT it says -bash, I am connected to openssh server in terminal, in from it says my hostname of the computer #1, that I am connected from. It also tells that on the Computer #2 I entered w command into the terminal.

LOGIN@

LOGIN@ means logged on at specific time.

IDLE

IDLE is what it is, user has been idle for a specific amount of time.

JCPU

JCPU time is the time used by all processes attached to the tty. It does not include past background jobs, it does include  currently running background jobs.

PCPU

PCPU time is the time used by the current process, named in the “what” field.