显示电源管理信号

来自 ArchWiki
(重定向自 DPMS

此文章或章节需要扩充。

原因: 未涵盖 Wayland。(在 Talk:Display Power Management Signaling 中讨论)

VESA 显示电源管理信号 (DPMS) 可以在计算机不使用时启用显示器的节能行为。显示器进入给定节能级别(待机挂起关闭)之前的非活动时间可以按照 DPMSSetTimeouts(3) 中的描述进行设置。

注意:LCD 显示器上,待机挂起关闭 模式执行相同的操作。DPMS 最初是为 CRT 开发的。

Linux 控制台

为了更改终端,setterm 会发出终端识别的转义码。本质上,它只是将终端序列写入/回显到当前终端设备,无论是在 screen、远程 ssh 终端、控制台模式、串行控制台等中。其语法(其中 0 禁用)

$ setterm --blank [0-60|force|poke]
$ setterm --powersave [on|vsync|hsync|powerdown|off]
$ setterm --powerdown [0-60]
注意
  • 仅控制台消隐不会启用 DPMS 节能。默认情况下,控制台消隐已禁用。 [1]
  • 当未启用 APM_DISPLAY_BLANK 内核配置选项时,setterm --powerdown 似乎没有任何效果。 [2]
  • 控制台消隐也可以通过 consoleblank 内核参数 启用。有关详细信息,请参阅 内核文档

要查看使用的转义码,请按如下方式管道输出

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

要修改特定终端,请将转义码重定向到它(具有写入权限)

$ setterm --powerdown 0 >> /dev/tty3
注意: 使用 >> 而不是 >。对于在脚本或类似内容中使用 sudo 时的权限问题,您可以使用 tee 将 setterm 的输出附加到 tty 设备,tty 设备有时允许附加但不允许写入。

Xorg

配置

要在 X Window 系统上完全禁用 DPMS 和屏幕消隐,创建 配置文件

/etc/X11/xorg.conf.d/10-extensions.conf
Section "Extensions"
    Option "DPMS" "false"
EndSection
/etc/X11/xorg.conf.d/10-serverflags.conf
Section "ServerFlags"
    Option "BlankTime" "0"
EndSection

如果您只想调整延迟,请更改持续时间(以分钟为单位)

/etc/X11/xorg.conf.d/10-serverflags.conf
Section "ServerFlags"
    Option "StandbyTime" "10"
    Option "SuspendTime" "20"
    Option "OffTime"     "30"
EndSection
注意: 如果 OffTime 选项不起作用,请改用屏幕消隐(即 BlankTime),这将使显示器保持开启状态,但显示黑色图像。

运行时设置

可以使用 xset 命令关闭显示器,该命令由 xorg-xset 软件包提供。

示例

命令 描述
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(1)

注意
  • XScreenSaverxfce4-power-manager 使用它们自己的 DPMS 设置并覆盖 xset 配置。有关更多信息,请参见 XScreenSaver#DPMS 和消隐设置Xfce#显示消隐
  • 如果在 shell 中手动使用该命令,您可能需要在其前面加上 sleep 1; 才能使其正常工作,例如 sleep 1; xset dpms force off
  • xset dpms 0 0 0,它将所有 DPMS 超时设置为零,可能是“禁用” DPMS 的更好方法,因为例如,当使用 xset dpms force off 关闭屏幕时,-dpms 的效果将被还原。
  • 如果在 xinitrc 中使用 xset 不起作用,请在 /etc/X11/xorg.conf.d/ 中的文件中指定设置,请参见 #配置

参见