Display Power Management Signaling (简体中文)

From ArchWiki
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.
翻译状态:本文是 Display Power Management Signaling翻译。上次翻译日期:2017-11-20。如果英文版本有所更改,则您可以帮助同步翻译。

DPMS (显示电源管理信号,简称DPMS) 可以在计算机一定时间无操作时,将显示器置于节电模式。具体的时间设置可以参考 [1]. 注意有些显示器在不同 DPMS 状态下表现不变。

在 X 中设定 DPMS

注意: 从 Xorg 1.8 开始,只要内核启用了 ACPI, DPMS 就会自动启用。

/etc/X11/xorg.confMonitor 段落中加上上:

Option "DPMS" "true"

把下面的配置加入 ServerLayout 小节, 必要时改变时间(以分钟计):

Option "StandbyTime" "10"
Option "SuspendTime" "20"
Option "OffTime" "30"
注意: If the "OffTime" option does not work replace it with the following, (change the "blanktime" to "0" to disable screen blanking)
Option         "BlankTime" "30"

比较新的X推荐使用 .conf 文件代替 xorg.conf, /etc/X11/xorg.conf.d/10-monitor.conf 的一个例子如下:

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

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

用xset修改DPMS和屏保设定

可以用 xorg-xset 提供的xset工具关闭屏幕。如果要在shell中关闭显示器,需要在命令前面加上 sleep 1; . 例如:

sleep 1; xset dpms force off

命令示例:

命令 描述
xset s off 禁用屏保清空
xset s 3600 3600 将清空时间设置到 1 小时
xset -dpms 关闭 DPMS
xset s off -dpms 禁用 DPMS 并阻止屏幕清空
xset dpms force off 立即关闭屏幕
xset dpms force standby 待机界面
xset dpms force suspend 休眠界面


注意: 通过 dpms 0 0 0 可以将 DPMS 超时都设置成零,这样也可以禁用 DPMS. 这种方式更方便,可以使用 xset dpms force off 关闭屏幕。

查看当前设置:

$ 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

运行 xset 可以查看全部可用命令.

注意: 如果在 xinitrc 中使用 xset 无法工作,在配置文件中进行设置。
警告: XScreenSaverxfce4-power-manager 会使用自己的 DPMS 设置,详情参考 XScreenSaver#DPMS and blanking settingsXfce#Display blanking.

Linux 终端和 DPMS 的交互

setterm 工具可以通过终端能够识别的转义字符修改终端。可以写入/echo 终端序列到当前终端设备,包括再显示设备,远程 SSH 终端, 控制台,串口控制台。

setterm Syntax: (0 disables)

setterm -blank [0-60|force|poke]
setterm -powersave [on|vsync|hsync|powerdown|off]
setterm -powerdown [0-60]

防止屏幕关闭

可以运行以下命令:

$ setterm -blank 0 -powerdown 0

也可以通过下列命令禁止终端清空:

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

将分号后的 0 修改为 3 会在 3 分钟后进入休眠模式。

通过 cat 显示输出中的转义

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

将转义输出到任意 tty (with write/append perms) 进行终端修改

$ setterm -powerdown 0 >> /dev/tty3
注意: 使用 >> 而不是 >. 如果脚本有 sudo 权限问题,tty 可能允许附加但是不允许写入, 可以使用 tee 阻止 setterm 输出到 tty 。

用循环设置 ttys 0-256

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

参阅