How do I prevent the blank screensaver when using keyboard shortcut to lock the computer?

I lock my computer a lot, and was wondering if there was a way to get the lock screen when I hit Ctrl + Alt + L. Right now when I use that key combination it turns the screen black, and I have to hit a key or click to bring up the screen where it shows the option to enter your password or switch users, as well as displaying the desktop background behind it.

Is there anyway to avoid having to hit that extra key, to bring up the screen I want? And is there anyway to keep it that way? It's really a matter of personal preference, and I don't see any reason why not to have it stay that way as my monitor eventually is turned off and/or my computer suspended.


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.

  1. Install xdotool with

    sudo apt-get install xdotool
    
  2. 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
    
  1. 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.

    screenshot

  2. 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.

    screenshot

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').

screenshot

Screen lock

For Ubuntu 18.04+, use

xdg-screensaver lock

On older versions was gnome-screensaver-command -l.