几年来(~2012-2020),在多台计算机(不同年份的 AMD/Intel、S3/AMD/Intel 显卡)上,我观察到了 X11 中一个奇怪的、与 DDX 无关的错误。
有时,经过几次睡眠 ( echo mem > /sys/power/state) 和唤醒周期后,X11 会“忘记”显示器的 DPMS 设置,并无限期地保持屏幕打开。
在这种状态下,xset dpms force suspend(或 - standby) 可以正常工作;我想知道该错误是否存在于活动检测或超时管理中。
有时问题需要数周时间才会浮出水面;有时它发生得非常快。我前几天碰巧需要重新启动,问题就出现了。在此之前,我想我在这台机器(我已经使用了大约一年)上只遇到过一次这个问题。
嗯,也许这实际上是一个竞争条件。耶耶耶。
作为严格测试,我将所有可以设置的值从默认的 600(10 分钟)更改为 5 秒。现在,xset q正在向我展示:
Screen Saver:
...
timeout: 5 cycle: 5
...
DPMS (Energy Star):
Standby: 5 Suspend: 5 Off: 5
DPMS is Enabled
Monitor is On
Run Code Online (Sandbox Code Playgroud)
我的屏幕既没有被 X 屏幕保护程序清空,也没有进入 DPMS 待机/挂起状态。
我猜我需要构建自己的 X 副本,添加尽可能多的printfs,并尝试记住始终使用我的 X 而不是系统 X...但在我去那里之前,我想知道是否有人有任何有趣、有见地的花絮供我先尝试。
谢谢 :)
注意。我的系统现在出现了这个问题,我将看看是否可以推迟几天重新启动。毕竟,这有点像“有 Z 的月份”。
这是 Chromium bug 1339361。如果您在 Chrome(或任何基于 Electron 的软件,如 Slack)中播放任何媒体,屏幕保护程序(包括 DPMS)将保持禁用状态,直到退出该进程。
禁用MIT-SCREEN-SAVER扩展应该会有所帮助。
$ sudo tee /etc/X11/xorg.conf.d/01-no-mit-screen-saver.conf <<EOM >/dev/null
Section "Extensions"
Option "MIT-SCREEN-SAVER" "Disable"
EndSection
EOM
Run Code Online (Sandbox Code Playgroud)
$ reboot
Run Code Online (Sandbox Code Playgroud)
检查以确保MIT-SCREEN-SAVER已禁用:
$ xdpyinfo -queryExtensions | grep MIT-SCREEN-SAVER
Run Code Online (Sandbox Code Playgroud)
Linux 中有多种暂停屏幕保护程序的方法。禁用MIT-SCREEN-SAVER应该不会影响屏幕保护程序、DPMS 或 YouTube 中的唤醒锁等,它们都应该继续正常工作。
在调试这个问题时,我发现了另一个错误(在我看来),即使在播放音频时,Chromium 似乎也会禁用屏幕保护程序。这就是每次 Outlook 中出现新邮件“叮”声时我的屏幕都会被唤醒的原因。但这是另一个故事了...
如果您好奇的话 - DPMS 的魔力发生在 中xorg-server,DPMSSet它调用 DPMS 和SetScreenSaverTimer,它会启动计时器(或不启动!)。
作为故障安全选项,我可以建议这种核解决方法,它将强制 DPMS 打开,而不管任何唤醒锁如何。显然它需要很大的超时时间,否则你将无法不间断地观看电影。
$ sudo apt install xprintidle
$ cat <<EOM >crontab
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin
DISPLAY=:0
*/15 * * * * t=`xprintidle` && [ $t -ge 7200000 -a $t -lt 9000000 ] && xset dpms force off
EOM
$ crontab crontab
$
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
951 次 |
| 最近记录: |