如何检查屏幕保护程序是否正在运行?

时间:2010-12-01 17:34:41

标签: linux x11 screensaver kde

我有一个用bash编写的脚本,如果屏幕保护程序当前正在运行,我需要采取不同的路径。这是Linux与Xorg和KDE。脚本是从cron调用的,它连接到DISPLAY =:0。

任何提示/想法如何检查屏幕保护程序的状态?

2 个答案:

答案 0 :(得分:6)

如果您正在运行KDE4,可以使用dbus检查屏幕保护程序是否正在运行:

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

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

这也适用于gnome,但它们因不遵循FreeDesktop标准而闻名,所以你必须使用:

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

最后但并非最不重要的是,您可以使用XScreenSaverQueryInfo()检查标准X屏幕服务器是否正在运行并检查状态字段。

答案 1 :(得分:3)

显然在运行屏幕保护程序时,除了屏幕保护程序二进制文件外,还有一个正在运行的进程:

/usr/lib/kde4/libexec/kscreenlocker

所以,我可以做ps uw -C kscreenlocker并检查结果。