How to lock without turning the screen (monitor) off?
If you need or want a solution that prevents the screen to fall asleep, but that does dim/lock the screen after a while, there is another solution: instead of the system's own dim/lock option, use the script below to run in the background. You will need to install xprintidle
.
How to set up:
Disable all dim / lock options in System Settings. (In Brightness & lock AND in "Energy" settings)
-
install xprintidle:
sudo apt-get install xprintidle
-
Find your screen name; run in a terminal:
xrandr
Look for the name in the line where it says "connected". Your screen name could be for example
VGA-1
orDVI-I-1
. Copy the script below, set the correct screen_name, the idle time before it should lock/dim the screen, and paste it into an empty file. Save it as
lock_dim.py
The script
#!/usr/bin/env python3
import subprocess
import time
seconds = 600 # number of seconds to wait before lock/dim the screen
screen_name = "DVI-I-1" # example, replace it with your screen's name
awake = True
while True:
curr_idle = subprocess.check_output(["xprintidle"]).decode("utf-8").strip()
if awake == True:
if int(curr_idle) > seconds*1000:
command1 = "gnome-screensaver-command -l"
command2 = "xrandr --output "+screen_name+" --brightness 0.1"
subprocess.call(["/bin/bash", "-c", command1])
subprocess.call(["/bin/bash", "-c", command2])
awake = False
else:
pass
elif awake == False:
if int(curr_idle) > seconds*1000:
pass
else:
command3 = "xrandr --output "+screen_name+" --brightness 1"
subprocess.call(["/bin/bash", "-c", command3])
awake = True
time.sleep(2)
Test the script by opening a terminal and type:
python3 /path/to/lock_dim.py
If it works as you like, add it to your startup applications: Open Dash > "Startup Applications" > "Add", add the command:
python3 /path/to/lock_dim.py