# Display Power Management Signaling (简体中文)

翻译状态： 本文是英文页面 Display_Power_Management_Signaling 的翻译，最后翻译时间：2016-03-25，点击这里可以查看翻译后英文页面的改动。

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

## 在 X 中设定 DPMS

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

在 `/etc/X11/xorg.conf` 的 `Monitor` 段落中加上上:

    Option "DPMS" "true"

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

    Option "StandbyTime" "10"
    Option "SuspendTime" "20"
    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)

    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 | 休眠界面

查看当前设置:

    $ 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` 可以查看全部可用命令.

Note: 如果在 xinitrc 中使用 `xset` 无法工作，在配置文件中进行设置。
Warning: XScreenSaver 和 xfce4-power-manager 会使用自己的 DPMS 设置，详情参考 XScreenSaver#DPMS and blanking settings 和 Xfce#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

### 通过 cat 显示输出中的转义

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

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

    $ setterm -powerdown 0 >> /dev/tty3

Note: 使用 `>>` 而不是 `>`. 如果脚本有 sudo 权限问题，tty 可能允许附加但是不允许写入， 可以使用 tee 阻止 setterm 输出到 tty 。

#### 用循环设置 ttys 0-256

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

## 参阅

- PC Monitor DPMS specification explanation
- DPMS control in X

Categories:

- X server (简体中文)
- Power management (简体中文)