1

Has anyone been able to use crontab to lock their screen automatically? I have tried all the suggested methods here but none seems to work. I have an Ubuntu 20.04 gnome desktop and even the Screen Lock in the settings does not work. Only the following command works via the terminal:

gnome-screensaver-command -l

Here is the current code block accessed by sudo crontab -e:

SHELL=/bin/bash

0 /1 * * systemctl restart network-manager

0 /1 * * systemctl restart teamviewerd

/2 * * * gnome-screensaver-command -l

1 Answers1

2

A more universal way of locking the screen is using:

loginctl lock-session

Cron doesn't know the Session ID for loginctl

When you use loginctl lock-session from the command line, your session ID is already known. For example:

$ echo $XDG_SESSION_ID

c2

$ loginctl list-sessions

SESSION UID USER SEAT
c2 1000 rick seat0

1 sessions listed.

The above shows two ways you can get your Session ID from the command line.

This GitHub issue for loginctl explains why the variable XDG_SESSION_ID is unknown to systemd. The same case would apply to cron:

So from cron you could use loginctl lock-session c2 if you knew your session ID would always be c2. An easier way is to use lock-sessions.

I tried this on my system and it works. Try using this on your crontab -e:

*/5  *   *  *   *     loginctl lock-sessions

Now, every five minutes your screen will lock.