Unfortunately, the lock-screen utility xdg-screensaver lock
(formerly gnome-screensaver-command
), which the Ctrl+Alt+L shortcut uses, will also activate the blank-screen "screensaver" whenever it is told to lock the screen.
The trick then is to "fake" a keystroke immediately after the screen is locked to get rid of the blank-screen and leave the lock-screen on. We'll do this with xdotool
, a small command-line utility which allows automation of keyboard and mouse clicks/movements.
Install xdotool
with
sudo apt-get install xdotool
Paste the following to a file in your home directory, such as locknoblank.sh
:
#!/usr/bin/env bash
gnome-screensaver-command -l
xdotool sleep 1 key Ctrl
This simply locks the screen normally, but one second later, sends a dummy Ctrl keystroke to "unblank" the screen.
Make the file executable with
chmod +x ~/locknoblank.sh
Go to System Settings...Keyboard...Shortcuts and remove Ctrl+Alt+L as the lock-screen shortcut so we can re-use it for our custom command. Click on "System" on the left sidebar, then click on the right of "Lock Screen" where it says "Ctrl+Alt+L"; it will now say "New Accelerator...". Press Backspace to remove the shortcut.
Now go to Custom Shortcuts on the left, and add a shortcut, naming it whatever you want to with the command as /home/username/locknoblank.sh
. Click Apply, then click on its right where it says "Disabled" to get "New Accelerator", and press Ctrl+Alt+L.
Close System Settings, and you're done!
To prevent reactivation of the screensaver (idle timeout)
Open a terminal, and type/paste:
gsettings set org.gnome.desktop.session idle-delay 7200 # Blank Screen Delay
This sets the screensaver idle activation time to 2 hours (or 7200 seconds). You can set it to anything you want; the default is 600 (10').
Screen lock
For Ubuntu 18.04+, use
xdg-screensaver lock
On older versions was gnome-screensaver-command -l
.