Ubuntu – How to prevent the blank screensaver when using keyboard shortcut to lock the computer

locklock-screenscreensaver

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.

Best Answer

Unfortunately, the lock-screen utility 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:

    #!/bin/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
      
  3. 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.

    enter image description here

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

    enter image description here

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

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.


Note: For Ubuntu 18.04, use

xdg-screensaver lock

instead of gnome-screensaver-command -l.