次の方法で、ユーザーのスクリーンセーバーが有効になっていることを確認できます。
gnome-screensaver-command -q
ユーザーが非アクティブのときに操作を実行するデーモンを作成しようとしましたが、このコマンドがユーザーセッション内で実行されていない場合は常にfalseを返すことがわかりました。たとえば、次の亜種はすべてスクリーンセーバーが有効になっていても非アクティブであると報告します。
sudo gnome-screensaver-command -q
sudo -u myuser gnome-screensaver-command -q
なぜこれが起こるのですか?他のユーザー(ルートなど)のユーザー画面の状態を確認するには?
答え1
少し遅れていることは分かりますが、今は他の人が答えを読むことができます。
問題はdbusにあります。を実行する前に正しい変数をエクスポートする必要がありますgnome-screensaver-command
。
まず、ユーザーのuidを知る必要があります。私もDISPLAY
ユーザーのものをエクスポートしました。コマンドを使用して値を取得できますw
sudo -u myuser DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/$UID_OF_MYUSER/bus DISPLAY=:0 gnome-screensaver-command --query
これはDebian 9で動作しますgnome-screensaver-command 3.6.1