【问题标题】:How to check if screen saver is running?如何检查屏幕保护程序是否正在运行?
【发布时间】:2011-05-18 15:37:42
【问题描述】:

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

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

【问题讨论】:

  • 我能找到的最接近的是xdg-screensaver status,但它只会告诉你它是否已启用,而不是何时运行。 GNOME 屏幕保护程序似乎有一个不稳定的 DBus 界面会暴露这一点,但我不知道如何访问它。 KDE 可能也有特定的方法,但其他人必须找到它。 :)
  • 我已经在 KDE 3.5 和 qdbus KDE 4 中使用 dcop 完成了这项工作,但是我现在无法访问我所在的 shell 脚本所在的家用计算机。结帐kdcopqdbusviewer 以检查kdesktop;一些试验和错误应该足以弄清楚。

标签: linux x11 screensaver kde


【解决方案1】:

您可以在 Gnome 40 上使用

dbus-send --session --print-reply=literal --dest=org.gnome.ScreenSaver /org/gnome/ScreenSaver org.gnome.ScreenSaver.GetActive

它会打印这样的东西

   boolean false

【讨论】:

    【解决方案2】:

    如果你运行的是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 屏幕服务器是否正在运行。

    【讨论】:

      【解决方案3】:

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

      /usr/lib/kde4/libexec/kscreenlocker
      

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-04-18
        • 1970-01-01
        • 2015-02-15
        • 1970-01-01
        • 1970-01-01
        • 2015-11-21
        • 2020-10-30
        相关资源
        最近更新 更多