There are multiple different layers, that influence the behavior of the monitor. To completely disable any suspension of the monitor you need to disable it in every of those layers:
1. layer: virtual consoles
Sets the interval of inactivity, in minutes, after which the screen will be automatically blanked:
setterm -blank 0
Sets the VESA powerdown interval in minutes:
setterm -powerdown 0
2. layer: X
Turn the screen saver function off. The s option lets you set the screen saver parameters.
xset s off
Disable DPMS if enabled:
xset -dpms
To find out which values are set type xset -q
in a terminal. A part of the output should look like this:
Screen Saver:
prefer blanking: yes allow exposures: yes
timeout: 0 cycle: 0
and this:
DPMS (Energy Star):
Standby: 0 Suspend: 0 Off: 0
DPMS is Disabled
3. layer: Last but not least; the application layer (XScreenSaver)
xscreensaver-demo
Choose Disable Screen Saver:
And deactivate screensaver in System Settings -> Brightness & Lock (depends on your desktop environment):
Turn screen of when inactive for: Never
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
or DVI-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 aslock_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
Best Answer
Open your System Settings. We need to make changes to Power and Brightness & Lock settings.
Power Settings
Change the value of Suspend when inactive for to Don't suspend.
Brightness & Lock Settings
Change the value of Turn screen off when inactive for to Never.
This should help to achieve your desired result.