web-dev-qa-db-ja.com

Ubuntu 16でスクリーンセーバーの状態を検出する方法

画面がロックされ、セーバーがアクティブであるかどうかを検出する必要があるスクリプトがあります。

Ubuntu 12では、gnome-screensaver-command -qを呼び出していました。このコマンドは16.04でも引き続き使用できますが、スクリーンセーバーが非アクティブであることを常に報告します。

このスクリプトを実行してテストしました。

#!/bin/bash
while true; do
    echo "Checking..."
    gnome-screensaver-command -q;
    sleep 1;
done

その後、数秒間画面をロックしました。 「スクリーンセーバーは非アクティブです」と報告されます。

これを破るためにUbuntu 16.04で何が変わったのですか?画面がロックされているかどうかの正確なレポートを取得するにはどうすればよいですか?

編集:Gnomeを使用しています。

3
Cerin

Unityをデスクトップ環境として使用している場合

qdbus org.gnome.ScreenSaver /com/canonical/Unity/Session com.canonical.Unity.Session.IsLocked

画面がロックされている場合はtrueを出力し、そうでない場合はfalseを出力します

1
Florian Diesch