2010-12-01 8 views
3

저는 스크린 세이버가 현재 실행 중일 때 다른 경로를 사용해야하는 bash로 작성된 스크립트를 가지고 있습니다. 이것은 Xorg와 KDE가있는 Linux입니다. 스크립트는 cron에서 호출되며 DISPLAY = : 0에 연결됩니다.화면 보호기가 실행 중인지 확인하는 방법은 무엇입니까?

어떤 힌트/아이디어 스크린 세이버의 상태를 확인하는 방법?

/usr/lib/kde4/libexec/kscreenlocker 

그래서, 나는 단순히 ps uw -C kscreenlocker을하고 결과를 확인할 수 있습니다 : 화면 보호기 바이너리 제외하고, 화면 보호기를 실행하는 경우

+0

내가 찾을 수있는 가장 가까운 파일은'xdg-screensaver status'이지만, 실행되고 있는지 여부 만 알려주고 있습니다. 그놈 화면 보호기는 이것을 드러내는 불안정한 DBus 인터페이스를 가지고있는 것처럼 보이지만, 어떻게 접근해야할지 모르겠습니다. KDE는 특정한 방법을 가지고 있을지도 모르지만 다른 누군가는 그것을 찾아야 할 것입니다. :) –

+0

KDE 3.5와'qdbus' KDE 4에서'dcop'을 사용하여이 작업을 수행했습니다. 그러나 지금은 쉘 스크립트가있는 가정용 컴퓨터에 액세스 할 수 없습니다. kdesktop을 검사하기 위해'kdcop' 또는'qdbusviewer'를 체크 아웃하십시오; 시행 착오는 그것을 이해하기에 충분해야합니다. – meagar

답변

3

는 분명히,이 프로세스가 실행이 있습니다.

6

는 KDE 4가 실행중인 경우, 화면 보호기가 실행되고 있는지 확인하는 DBUS를 사용할 수 있습니다

$ qdbus org.freedesktop.ScreenSaver /ScreenSaver org.freedesktop.ScreenSaver.GetActive 

또는

$ qdbus org.kde.screensaver /ScreenSaver org.freedesktop.ScreenSaver.GetActive 

이 그놈도 작동하지만, 그들이 알려져있다

$ qdbus org.gnome.ScreenSaver /ScreenSaver org.gnome.ScreenSaver.GetActive 

마지막으로, 당신은 어떤가를 확인할 수 있습니다 사용할 그래서, FreeDesktop 기준을 다음하지 않는 표준 X 스크린 서버가 XScreenSaverQueryInfo()를 사용하여 실행되고 상태 필드를 확인합니다.

관련 문제