# Display Power Management Signaling (简体中文)

From ArchWiki
Jump to navigation Jump to search
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.conf` 的 `Monitor` 段落中加上上:

    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` 无法工作，在配置文件中进行设置。
警告： 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

将分号后的 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;

## 参阅

- PC Monitor DPMS specification explanation
- DPMS control in X

Categories:

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