Display Power Management Signaling (正體中文)
DPMS (VESA Display Power Management Signaling) 當電腦非使用中啓用螢幕省電特性。可以按照DPMSSetTimeouts(3)的說明來設定 監視器進入預設的省電等級 ——待用(standby,隨時再顯示)、暫停(suspend,省電但再顯示慢)或關閉 (off,連背光都全關)—— 之前停止活動的時間。 注意DPMS是基於CRT螢幕所開發,而在LCD顯示器上通常 待用、暫停、關閉等模式下並沒有差別。
Xorg中設定 DPMS
加入下列文字到檔案: /etc/X11/xorg.conf.d/
在 Monitor
部份 (如果沒有自行建立) :
Option "DPMS" "true"
加入下列文字設定到 ServerFlags
段落,如果需要自定就修改時間(單位分鐘):
Option "StandbyTime" "10"
Option "SuspendTime" "20"
Option "OffTime" "30"
"OffTime"
選項沒有工作, 用 screen blanking 替代, 這選項將保持螢幕常常以一個黑色圖片來顯示 (以LCD來說,液晶轉暗面但背光沒有關閉)。或者, 變更 "blanktime"
為 "0"
停用 screen blanking :
Option "BlankTime" "30"
最後範例檔案 /etc/X11/xorg.conf.d/10-monitor.conf
可能看來像這樣:
Section "Monitor" Identifier "LVDS0" Option "DPMS" "false" EndSection
Section "ServerFlags" Option "StandbyTime" "0" Option "SuspendTime" "0" Option "OffTime" "0" Option "BlankTime" "0" EndSection
Section "ServerLayout" Identifier "ServerLayout0" EndSection
啓用 DPMS
注意使用gdm(3.38.2)及xwayland(1.20.9)時有可能無法自動啓用dpms
無法啓用時xset -q 輸出會像這樣 :
$ xset q
~ DPMS (Energy Star): Server does not have the DPMS Extension
可以啓用時 xset -q 輸出會像這樣:
$ xset q
~ DPMS (Energy Star): Standby: 0 Suspend: 0 Off: 0 DPMS is Enabled Monitor is On
可能解決法(參考):
安裝vbetool,使用指令sudo vbetool dpms off
或on
,來關閉/打開螢幕。 不過關閉螢幕後必須進入盲打於終端機輸入指令或重新開機才能再次啟動螢幕。
參考GDM設定, 在 /etc/gdm/custom.conf 設定中取消wayland off的註解後存檔並重新開機(wayland也可能造成systemctl 無法登入時呼叫自定義服務) :
/etc/gdm/custom.conf
[daemon] # Uncomment the line below to force the login screen to use Xorg WaylandEnable=false
停用 DPMS
Note:之前的部份已有提到選項 "DPMS" "false"
,
因為 DPMS 預設被許多去腳本啓用, 要停用他必須明確的宣告。
要完全停用 DPMS,添加下列選項文字到檔案:
/etc/X11/xorg.conf.d/10-monitor.conf
:
Section "Extensions" Option "DPMS" "Disable" EndSection
用指令修改 DPMS 與螢幕保護(screensaver)設定
可以用指令 xset 指令,指令由安裝包提供: xorg-xset 。
例子:
Command | Description |
---|---|
xset s off | Disable screen saver blanking |
xset s 3600 3600 | Change blank time to 1 hour |
xset -dpms | Turn off DPMS |
xset s off -dpms | Disable DPMS and prevent screen from blanking |
xset dpms force off | Turn off screen immediately |
xset dpms force standby | Standby screen |
xset dpms force suspend | Suspend screen |
指令查詢目前設定:
$ 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) 獲得所有可用命令。
{{Note (正體中文)|
- XScreenSaver 與 xfce4-power-manager 用他們自有的 DPMS 設定並覆蓋 xset 的設定。 查看 XScreenSaver#DPMS and blanking settings 與 Xfce#Display blanking 得到進一步訊息。
- 如果手動在shell輸入指令時,你可能需要個前綴
sleep 1;
讓他正確地工作,例如sleep 1; xset dpms force off
-
xset dpms 0 0 0
, 這設定所以有 DPMS 超時設定到零,也許是較好的方式去禁用 "disable" DPMS, 由於選項-dpms
可能被回複的時候,例如,關閉螢幕以指令xset dpms force off
. - 如果使用
xset
在 xinitrc 不工作,指定設定於檔案/etc/X11/xorg.conf.d/
. 查看 [[#Xorg中設定 DPMS] 得到詳細說明。
}}
DPMS 在 Linux console 中用指令 setterm 互動
指令 setterm 作用造成終端機(terminal)瞭解轉譯代碼(escape codes)改變了終端機。本質上他僅僅 writes/echos 終端機序列(terminal sequences)到目前終端機裝置, 不論那裝置是以螢幕、遠端ssh 終端機、控制台終端模式(console mode)、序列控制台(serial consoles)等等形式。
setterm Syntax: (0 disables)
$ setterm -blank [0-60|force|poke] $ setterm -powersave [on|vsync|hsync|powerdown|off] $ setterm -powerdown [0-60]
管線指令輸出到指令cat以看到轉譯符
$ setterm -powerdown 2>&1 | exec cat -v 2>&1 | sed "s/\\^\\[/\\\\033/g"
用轉譯符到任何 tty (搭配以寫入附加的組合) 以修改終端機
$ setterm -powerdown 0 >> /dev/tty3
>>
被使用而不是 >
。 腳本有權限問題使用 sudo 或其他指令,你也可以用 tee 指令去附加setterm的輸出到 tty 裝置,讓tty's 附加但不寫入。( Bash 迴圈去設定所有 ttys 0-256
$ for i in {0..256}; do setterm -powerdown 0 >> /dev/tty$i; done; unset i;