[<#>注意:注意到类似的问题,但它从未收到响应。]
我在archlinux上使用D2。我已经设置了DPMS,以便在2分钟不活动(xset dpms 0 120 180)后暂停显示。然而,我注意到它并不总是自动启动。我不认为这是一个硬件问题,因为执行xset dpms force没有问题。
我的设置:
$ xset q
Keyboard Control:
auto repeat: on key click percent: 0 LED mask: 00000000
XKB indicators:
00: Caps Lock: off 01: Num Lock: off 02: Scroll Lock: off
03: Compose: off 04: Kana: off 05: Sleep: off
06: Suspend: off 07: Mute: off 08: Misc: off
09: Mail: off 10: Charging: off 11: Shift Lock: off
12: Group 2: off 13: Mouse Keys: off
auto repeat delay: 660 repeat rate: 25
auto repeating keys: 00ffffffdffffbbf
fadfffefffedffff
9fffffffffffffff
fff7ffffffffffff
bell percent: 50 bell pitch: 400 bell duration: 100
Pointer Control:
acceleration: 2/1 threshold: 4
Screen Saver:
prefer blanking: yes allow exposures: yes
timeout: 0 cycle: 600
Colors:
default colormap: 0x22 BlackPixel: 0x0 WhitePixel: 0xffffff
Font Path:
/usr/share/fonts/TTF/,/usr/share/fonts/OTF/,built-ins
DPMS (Energy Star):
Standby: 0 Suspend: 120 Off: 180
DPMS is Enabled
Monitor is On如何根据DPMS设置确定是什么阻止我的显示器挂起?
发布于 2019-03-29 01:32:33
您可以使用这个小程序来检查它是否是某个用户输入的结果(过于敏感的鼠标?)或者应用程序主动重置XScreenSaver扩展空闲计时器:
#include
#include
#include
/* Report amount of X server idle time. */
/* Build with- */
/* cc xidle.c -o xidle -lX11 -lXext -lXss */
int main(int argc, char *argv[])
{
Display *display;
int event_base, error_base;
XScreenSaverInfo info;
float seconds;
display = XOpenDisplay("");
if (XScreenSaverQueryExtension(display, &event_base, &error_base)) {
XScreenSaverQueryInfo(display, DefaultRootWindow(display), &info);
seconds = (float)info.idle/1000.0f;
printf("%f\n",seconds);
return(0);
}
else {
fprintf(stderr,"Error: XScreenSaver Extension not present\n");
return(1);
}
}发布于 2022-06-10 18:33:49
对于在2022年发生这种情况的人,请在您的$HOME中检查$HOME,看看是否有什么东西没有阻止待机。在我的例子中,一段用chrome显示的视频阻止DPMS关闭监视器。
powerdevil: Enforcing inhibition from ":1.23" "/usr/bin/google-chrome-stable" with cookie 3821 and reason "Video Wake Lock"
powerdevil: Added change screen settings
powerdevil: Added interrupt session
powerdevil: Disabling DPMS due to inhibition发布于 2023-01-25 19:43:33
为了改进@L29Ah的答案,在Github上有一个程序可以打印X在没有输入事件的情况下已经走了多长时间:https://github.com/g0hl1n/xprintidle
因此,要隔离X输入是否阻止监视器挂起,请执行以下操作:
$ xset dpms 3 3 3 # Set your monitor to turn off after 10 seconds:
$ while true; do sleep 1 && xprintidle; done如果时间持续增加,即使在3秒之后,阻止监视器关闭的不是X输入。
在我的例子中,它是一个流浪的SMPlayer窗口,当它真的不是的时候,它肯定认为它是聚焦的。所以请继续关闭窗口,直到找到防止挂起的窗口。
https://unix.stackexchange.com/questions/434625
复制相似问题