![X11 - DPMS가 모니터를 일시 중지하는 것을 방해하는 요인이 무엇인지 어떻게 확인합니까?](https://linux55.com/image/130564/X11%20-%20DPMS%EA%B0%80%20%EB%AA%A8%EB%8B%88%ED%84%B0%EB%A5%BC%20%EC%9D%BC%EC%8B%9C%20%EC%A4%91%EC%A7%80%ED%95%98%EB%8A%94%20%EA%B2%83%EC%9D%84%20%EB%B0%A9%ED%95%B4%ED%95%98%EB%8A%94%20%EC%9A%94%EC%9D%B8%EC%9D%B4%20%EB%AC%B4%EC%97%87%EC%9D%B8%EC%A7%80%20%EC%96%B4%EB%96%BB%EA%B2%8C%20%ED%99%95%EC%9D%B8%ED%95%A9%EB%8B%88%EA%B9%8C%3F.png)
[노트: 눈치채다유제그러나 결코 답장을 받지 못했습니다. ]
저는 을 (를) i3
사용하고 있습니다. archlinux
2분 동안 활동이 없으면 디스플레이가 일시 중지되도록 DPMS를 설정했습니다( 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 설정에 따라 모니터가 일시 중지되는 것을 방해하는 요인이 무엇인지 어떻게 확인합니까?
답변1
이 작은 프로그램을 사용하여 일부 사용자 입력(너무 민감한 마우스?)으로 인해 발생했는지 또는 응용 프로그램이 XScreenSaver 확장 유휴 타이머를 적극적으로 재설정하여 발생했는지 확인할 수 있습니다.
#include <stdio.h>
#include <X11/Xlib.h>
#include <X11/extensions/scrnsaver.h>
/* 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);
}
}
답변2
2022년에 이 문제가 발생하는 경우 $HOME에서 .xsession_errors를 확인하고 대기를 방해하지 않는 것이 있는지 확인하세요. 내 경우에는 크롬의 비디오로 인해 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
답변3
@ 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 창이었습니다. 따라서 걸림 현상을 방지할 수 있는 창을 찾을 때까지 창을 계속 닫아 두십시오.