Display Power Management Signaling

出自 Arch Linux 中文维基

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;

參閱[編輯 | 編輯原始碼]