TTY[1-6]: Lock screen after delay (like a screensaver)

When using the virtual terminals on TTY 1-6 [*], it's sometimes easy to forget to log out: The screen goes blank after a while, but I'm still logged in - no password required, anyone can use my account. (Or I switch to another TTY, and forget the other one...)

I'd like to have screensaver-like functionality that locks the terminal after 3 minutes, and then requires a password. How do I set this up?


[*] With TTY 1-6, I mean CTRLALTF1 - CTRLALTF6 (no X Server)


I know this is old, but I found you on google searching for the same question.

If you’re using bash, it’s no problem. Just use the environment-variable 'TMOUT' which is used by bash for a auto-logout (logout! not lock) in the given seconds.

You can just type ''TMOUT=5'' into any bash an see, what happens.

For configuration in my bashrc I’m using

# autologout on tty1-6 after 30 minutes
if [[ $(tty) =~ /dev\/tty[1-6] ]]; then TMOUT=1800; fi

so I don’t get logged out on a terminal-emulator which is normally on /dev/pty/# and already get locked by my screensaver as part of my desktop


Implementing a screensaver that way for the TTYs is hard, as you cannot query the X server for the idle time.

If you discipline yourself, you can use the vlock command to explicitly lock a terminal.

A workaround for the timeout approach would be to ssh to localhost and let the ssh connection timeout take care of the rest. The timeout is specified under LoginGraceTime in /etc/ssh/sshd_config and is 120 seconds by default.

If you run exec ssh localhost, you would be automatically logged out when the ssh connection times out. To keep your programs running past the timeout, you could run them via screen.