我有一个用bash编写的脚本,如果屏幕保护程序当前正在运行,我需要采取不同的路径。这是Linux与Xorg和KDE。脚本是从cron调用的,它连接到DISPLAY =:0。
任何提示/想法如何检查屏幕保护程序的状态?
答案 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
并检查结果。