Difference between revisions of "Display Power Management Signaling"

From ArchWiki
Jump to: navigation, search
m (xset DPMS settings do not work with xscreensaver)
(Modifying DPMS and screensaver settings using xset: Mentioning an extra, possibly better, way of disabling DPMS with xset.)
(37 intermediate revisions by 16 users not shown)
Line 1: Line 1:
 +
[[Category:X server]]
 +
[[Category:Power management]]
 
[[de:DPMS]]
 
[[de:DPMS]]
 +
[[ja:Display Power Management Signaling]]
 
[[ru:Display Power Management Signaling]]
 
[[ru:Display Power Management Signaling]]
[[Category:X Server]]
+
[[zh-hans:Display Power Management Signaling]]
[[Category:Power management]]
+
'''[[Wikipedia:VESA Display Power Management Signaling|DPMS]]''' (Display Power Management Signaling) enables power saving behaviour of monitors when the computer is not in use. For details on each timeout, see [http://linux.die.net/man/3/dpmssettimeouts]. Note that some monitors make no difference between various DPMS modes.
  
 +
== Setting up DPMS in X ==
  
'''[[Wikipedia:VESA Display Power Management Signaling|DPMS]]''' (Display Power Management Signaling) is a technology that allows power saving behaviour of monitors when the computer is not in use.
 
 
== Setting up DPMS in X ==
 
 
{{Note|As of Xorg 1.8 DPMS is auto detected and enabled if ACPI is also enabled at kernel runtime.}}
 
{{Note|As of Xorg 1.8 DPMS is auto detected and enabled if ACPI is also enabled at kernel runtime.}}
Add the following to your {{ic|/etc/X11/xorg.conf}} in the {{ic|Monitor}} section:
+
Add the following to a file in {{ic|/etc/X11/xorg.conf.d/}} in the {{ic|Monitor}} section:
 
  Option "DPMS" "true"
 
  Option "DPMS" "true"
  
Line 16: Line 17:
 
  Option "SuspendTime" "20"
 
  Option "SuspendTime" "20"
 
  Option "OffTime" "30"
 
  Option "OffTime" "30"
{{Note|If the ''"OffTime"'' option does not work replace it with the following, (change the ''"blanktime"'' to ''"0"'' to disable screen blanking)
+
{{Note|If the {{ic|"OffTime"}} option does not work, use screen blanking instead, which will keep the monitor turned on with a black image. Alternatively, change {{ic|"blanktime"}} to {{ic|"0"}} to disable screen blanking
 
  Option        "BlankTime" "30"
 
  Option        "BlankTime" "30"
}}
 
  
As with newer versions of X it is recommended to use different {{ic|.conf}} files instead of a {{ic|xorg.conf}}, an example file {{ic|/etc/X11/xorg.conf.d/10-monitor.conf}} could look like this.
+
An example file {{ic|/etc/X11/xorg.conf.d/10-monitor.conf}} could look like this.
  
 
  Section "Monitor"
 
  Section "Monitor"
Line 29: Line 29:
 
  Section "ServerLayout"
 
  Section "ServerLayout"
 
     Identifier "ServerLayout0"
 
     Identifier "ServerLayout0"
    Option "BlankTime"  "0"
 
 
     Option "StandbyTime" "0"
 
     Option "StandbyTime" "0"
 
     Option "SuspendTime" "0"
 
     Option "SuspendTime" "0"
     Option "OffTime" "0"
+
     Option "OffTime"     "0"
 +
    Option "BlankTime"  "0"
 
  EndSection
 
  EndSection
 +
}}
  
== Modifying DPMS and screensaver settings using xset==
+
== Modifying DPMS and screensaver settings using xset ==
It is possible to turn off your monitor using the {{ic|xset}} tool.  Note if using this command manually in a shell you may need to prefix it with {{ic|sleep 1;}} for it to work correctly.  For example:
 
sleep 1; xset dpms force off
 
  
To control Energy Star (DPMS) features (a timeout value of zero disables the mode):
+
It is possible to turn off your monitor using the ''xset'' tool which is provided by [[installing]] the {{Pkg|xorg-xset}} package.
xset -dpms Energy Star features off
 
xset +dpms Energy Star features on
 
xset dpms [standby [suspend [off]]]   
 
xset dpms force standby
 
xset dpms force suspend
 
xset dpms force off
 
xset dpms force on  (also implicitly enables DPMS features)
 
  
===xset screen-saver control===
+
{{Note|If using this command manually in a shell you may need to prefix it with {{ic|sleep 1;}} for it to work correctly, for example {{ic|sleep 1; xset dpms force off}}
You can use xset to control your screensaver:
+
}}
xset s [timeout [cycle]] 
 
xset s default   
 
xset s on
 
xset s blank             
 
xset s noblank   
 
xset s off
 
xset s expose           
 
xset s noexpose
 
xset s activate         
 
xset s reset
 
 
 
===To see your current settings===
 
$ xset q
 
 
...
 
 
Screen Saver:
 
  prefer blanking:  yes    allow exposures:  yes
 
  timeout:  600    cycle:  600
 
DPMS (Energy Star):
 
  Standby: 600    Suspend: 600    Off: 600
 
  DPMS is Enabled
 
  Monitor is On
 
  
==Examples==
+
Example commands:
  
===Turn off DPMS===
+
{| class="wikitable"
xset -dpms
+
! Command
 +
! Description
 +
|-
 +
| xset s off
 +
| Disable screen saver blanking
 +
|-
 +
| xset s 3600 3600
 +
| Change blank time to 1 hour
 +
|-
 +
| xset -dpms
 +
| Turn off DPMS
 +
|-
 +
| xset s off -dpms
 +
| Disable DPMS and prevent screen from blanking
 +
|-
 +
| xset dpms force off
 +
| Turn off screen immediately
 +
|-
 +
| xset dpms force standby
 +
| Standby screen
 +
|-
 +
| xset dpms force suspend
 +
| Suspend screen
 +
|}
  
===Disable screen saver blanking===
+
{{Note|{{ic|dpms 0 0 0}}, which sets all the DPMS timeouts to zero, could be a better way to "disable" DPMS, since the effect of {{ic|-dpms}} would be reverted when, for example, turning off the screen with {{ic|xset dpms force off}}.}}
xset s off
 
  
=== Disable DPMS and prevent screen from blanking ===
+
To query the current settings:
Useful when watching movies or slideshows:
 
xset -dpms; xset s off
 
  
===Turn off screen immediately===
+
{{hc|$ xset q|
If you leave your computer, you do not need to wait for the timeout you set that the display turns off. Simply enforce it by using the xset command.
+
...
xset dpms force off
 
  
===Put screen into standby===
+
Screen Saver:
  xset dpms force standby
+
  prefer blanking: yes    allow exposures:  yes
 +
  timeout:  600    cycle:  600
 +
DPMS (Energy Star):
 +
  Standby: 600    Suspend: 600    Off: 600
 +
  DPMS is Enabled
 +
  Monitor is On
 +
}}
  
===Put screen into suspend===
+
See {{ic|xset}} for all available commands.
xset dpms force suspend
 
  
===Change Blank time from 5 min to 1 hour===
+
{{Note|If using {{ic|xset}} in [[xinitrc]] does not work, specify settings within a file in {{ic|/etc/X11/xorg.conf.d/}}. See [[#Setting up DPMS in X]] for details.}}
xset s 3600 3600
 
  
===xset display.sh===
+
{{Warning|[[XScreenSaver]] and {{Pkg|xfce4-power-manager}} use their own DPMS settings and override ''xset'' configuration. See [[XScreenSaver#DPMS and blanking settings]] and [[Xfce#Display blanking]] for more information.}}
You could also copy this script:
 
{{hc|/usr/local/bin/display.sh|<nowiki>
 
#!/bin/bash
 
# Small script to set display into standby, suspend or off mode
 
# 20060301-Joffer
 
  
case $1 in
+
== DPMS interaction in a Linux console with setterm ==
  standby|suspend|off)
 
    xset dpms force $1
 
  ;;
 
  *)
 
    echo "Usage: $0 standby|suspend|off"
 
  ;;
 
esac
 
</nowiki>}}
 
  
Make it executable ({{ic|chmod u+x /usr/local/bin/display.sh}}) and just run {{ic|display.sh off}}. For the latter to work you need to include {{ic|/usr/local/bin}} into your path.
 
 
== DPMS interaction in a Linux console with setterm ==
 
 
The ''setterm'' utility issues terminal recognized escape codes to alter the terminal. Essentially it just writes/echos the terminal sequences to the current terminal device, whether that be in screen, a remote ssh terminal, console mode, serial consoles, etc.  
 
The ''setterm'' utility issues terminal recognized escape codes to alter the terminal. Essentially it just writes/echos the terminal sequences to the current terminal device, whether that be in screen, a remote ssh terminal, console mode, serial consoles, etc.  
  
Line 131: Line 107:
 
=== Prevent screen from turning off ===
 
=== Prevent screen from turning off ===
  
You can run this command, and add it to /etc/rc.local:
+
You can run this command:
 
 
 
  $ setterm -blank 0 -powerdown 0
 
  $ setterm -blank 0 -powerdown 0
  
 
Alternatively you can disable console blanking permanently using the following command:
 
Alternatively you can disable console blanking permanently using the following command:
  
  # echo -ne "\033[9;0]" >> /etc/issue
+
  # echo -ne "\033[9;0]" >> /etc/issue
  
 
=== Pipe the output to a cat to see the escapes ===
 
=== Pipe the output to a cat to see the escapes ===
 +
 
  $ setterm -powerdown 2>&1 | exec cat -v 2>&1 | sed "s/\\^\\[/\\\\033/g"
 
  $ setterm -powerdown 2>&1 | exec cat -v 2>&1 | sed "s/\\^\\[/\\\\033/g"
  
===Pipe the escapes to any tty (with write/append perms) to modify that terminal===
+
=== Pipe the escapes to any tty (with write/append perms) to modify that terminal ===
Note the use of '''>>''' instead of '''>'''.  For permission issues using sudo in a script or something, you can use the '''tee''' program to append the output of setterm to the tty device, which tty's let appending sometimes but not writing.
 
$ setterm -powerdown 0 > /dev/tty3
 
  
====Bash loop to set ttys 0-256====
+
  $ setterm -powerdown 0 >> /dev/tty3
  $ for i in {0..256}; do setterm -powerdown 0 >> /dev/tty$i; done; unset i;
 
  
== Troubleshooting ==
+
{{Note|{{ic|>>}} is used instead of {{ic|>}}. For permission issues using ''sudo'' in a script or something, you can use the '''tee''' program to append the output of setterm to the tty device, which tty's let appending sometimes but not writing.}}
  
=== xset DPMS settings do not work with xscreensaver ===
+
==== Bash loop to set ttys 0-256 ====
  
[[xscreensaver]] uses its own DPMS settings. See the settings for xscreensaver for more information.
+
$ for i in {0..256}; do setterm -powerdown 0 >> /dev/tty$i; done; unset i;
  
==== xscreensaver DPMS ====
+
== See also ==
You can configure xscreensaver's DPMS settings manually by editing your {{ic|~/.xscreensaver}} file as below, or using the xscreensaver-demo gui.
 
{{bc|
 
timeout: 1:00:00
 
cycle: 0:05:00
 
lock: False
 
lockTimeout: 0:00:00
 
passwdTimeout: 0:00:30
 
fade: True
 
unfade: False
 
fadeSeconds: 0:00:03
 
fadeTicks: 20
 
dpmsEnabled: True
 
dpmsStandby: 2:00:00
 
dpmsSuspend: 2:00:00
 
dpmsOff: 4:00:00
 
}}
 
  
==See also==
 
 
* [http://webpages.charter.net/dperr/dpms.htm PC Monitor DPMS specification explanation]
 
* [http://webpages.charter.net/dperr/dpms.htm PC Monitor DPMS specification explanation]
 +
* [http://ptspts.blogspot.be/2009/10/screen-blanking-dpms-screen-saver.html DPMS control in X]

Revision as of 15:58, 10 July 2017

DPMS (Display Power Management Signaling) enables power saving behaviour of monitors when the computer is not in use. For details on each timeout, see [1]. Note that some monitors make no difference between various DPMS modes.

Setting up DPMS in X

Note: As of Xorg 1.8 DPMS is auto detected and enabled if ACPI is also enabled at kernel runtime.

Add the following to a file in /etc/X11/xorg.conf.d/ in the Monitor section:

Option "DPMS" "true"

Add the following to the ServerLayout section, change the times (in minutes) as necessary:

Option "StandbyTime" "10"
Option "SuspendTime" "20"
Option "OffTime" "30"
Note: If the "OffTime" option does not work, use screen blanking instead, which will keep the monitor turned on with a black image. Alternatively, change "blanktime" to "0" to disable screen blanking
Option         "BlankTime" "30"

An example file /etc/X11/xorg.conf.d/10-monitor.conf could look like this.

Section "Monitor"
    Identifier "LVDS0"
    Option "DPMS" "false"
EndSection

Section "ServerLayout"
    Identifier "ServerLayout0"
    Option "StandbyTime" "0"
    Option "SuspendTime" "0"
    Option "OffTime"     "0"
    Option "BlankTime"   "0"
EndSection

Modifying DPMS and screensaver settings using xset

It is possible to turn off your monitor using the xset tool which is provided by installing the xorg-xset package.

Note: If using this command manually in a shell you may need to prefix it with sleep 1; for it to work correctly, for example sleep 1; xset dpms force off

Example commands:

Command Description
xset s off Disable screen saver blanking
xset s 3600 3600 Change blank time to 1 hour
xset -dpms Turn off DPMS
xset s off -dpms Disable DPMS and prevent screen from blanking
xset dpms force off Turn off screen immediately
xset dpms force standby Standby screen
xset dpms force suspend Suspend screen
Note: dpms 0 0 0, which sets all the DPMS timeouts to zero, could be a better way to "disable" DPMS, since the effect of -dpms would be reverted when, for example, turning off the screen with xset dpms force off.

To query the current settings:

$ xset q
...

Screen Saver:
  prefer blanking:  yes    allow exposures:  yes
  timeout:  600    cycle:  600
DPMS (Energy Star):
  Standby: 600    Suspend: 600    Off: 600
  DPMS is Enabled
  Monitor is On

See xset for all available commands.

Note: If using xset in xinitrc does not work, specify settings within a file in /etc/X11/xorg.conf.d/. See #Setting up DPMS in X for details.
Warning: XScreenSaver and xfce4-power-manager use their own DPMS settings and override xset configuration. See XScreenSaver#DPMS and blanking settings and Xfce#Display blanking for more information.

DPMS interaction in a Linux console with setterm

The setterm utility issues terminal recognized escape codes to alter the terminal. Essentially it just writes/echos the terminal sequences to the current terminal device, whether that be in screen, a remote ssh terminal, console mode, serial consoles, etc.

setterm Syntax: (0 disables)

setterm -blank [0-60|force|poke]
setterm -powersave [on|vsync|hsync|powerdown|off]
setterm -powerdown [0-60]
Note: If you haven't already read the brief DPMS article linked to below, please skim it to understand how DPMS can be used in the console the same as in X.

Prevent screen from turning off

You can run this command:

$ setterm -blank 0 -powerdown 0

Alternatively you can disable console blanking permanently using the following command:

# echo -ne "\033[9;0]" >> /etc/issue

Pipe the output to a cat to see the escapes

$ setterm -powerdown 2>&1 | exec cat -v 2>&1 | sed "s/\\^\\[/\\\\033/g"

Pipe the escapes to any tty (with write/append perms) to modify that terminal

$ setterm -powerdown 0 >> /dev/tty3
Note: >> is used instead of >. For permission issues using sudo in a script or something, you can use the tee program to append the output of setterm to the tty device, which tty's let appending sometimes but not writing.

Bash loop to set ttys 0-256

$ for i in {0..256}; do setterm -powerdown 0 >> /dev/tty$i; done; unset i;

See also