DBUSでVLC抑制を検出する方法

DBUSでVLC抑制を検出する方法

スクリーンセーバーが無効になっていることを確認するためにArchでxfceを使用しようとしています。

このコマンドは、クロムが以下を抑制するときに機能します。

dbus-send --print-reply=literal --type=method_call --dest=org.freedesktop.PowerManagement \
/org/freedesktop/PowerManagement/Inhibit org.freedesktop.PowerManagement.Inhibit.HasInhibit

しかし、vlcでは動作しません。 vlcを使用してビデオを再生すると、スクリーンセーバーは起動しません。

powermanagerはvlc -s抑制の通知を受け取っていないようですが、スクリーンセーバーは受信しますが、スクリーンセーバーの抑制について問い合わせる方法はありません。

これは、vlcスタート/ストップのdbusとChromeのYouTubeビデオで見ることができるものです。


dbus-monitor --session interface=org.freedesktop.ScreenSaver
--- VLC START ---
method call time=1662491009.469655
sender=:1.1716 ->
destination=org.freedesktop.ScreenSaver serial=25
path=/ScreenSaver; interface=org.freedesktop.ScreenSaver;
member=Inhibit
string "vlc"
string "Playing some media."

--- VLC STOP ---
method call time=1662491018.895743
sender=:1.1716 ->
destination=org.freedesktop.ScreenSaver serial=26
path=/ScreenSaver;
interface=org.freedesktop.ScreenSaver;
member=UnInhibit
uint32 210

--- chrome START ---
method call time=1662491026.467214
sender=:1.2337 -> destination=org.freedesktop.ScreenSaver serial=5
path=/org/freedesktop/ScreenSaver;
interface=org.freedesktop.ScreenSaver;
member=Inhibit
string "/usr/lib/chromium/chromium"
string "Video Wake Lock"

method call time=1662491026.468662
sender=:1.32 ->
destination=:1.34 serial=996
path=/org/freedesktop/ScreenSaver;
interface=org.freedesktop.ScreenSaver;
member=Inhibit
string "xfce4-power-manager"
string "Inhibit requested"

--- chrome STOP ---
method call time=1662491029.945141
sender=:1.2337 ->
destination=org.freedesktop.ScreenSaver serial=8
path=/org/freedesktop/ScreenSaver;
interface=org.freedesktop.ScreenSaver;
member=UnInhibit
uint32 211

method call time=1662491032.135892
sender=:1.32 ->
destination=:1.34 serial=1000
path=/org/freedesktop/ScreenSaver;
interface=org.freedesktop.ScreenSaver;
member=UnInhibit
uint32 212

--------------------------------------

dbus-monitor --session interface=org.freedesktop.PowerManagement.Inhibit
--- VLC START ---
nothing
--- VLC STOP ---
nothing

--- chrome START ---
method call time=1662491438.346199 sender=:1.2340 -> 
destination=org.freedesktop.PowerManagement serial=7 
path=/org/freedesktop/PowerManagement/Inhibit; 
interface=org.freedesktop.PowerManagement.Inhibit; 
member=Inhibit
string "/usr/lib/chromium/chromium"
string "Video Wake Lock"

method call time=1662491438.540545 sender=:1.2341 -> 
destination=org.freedesktop.PowerManagement serial=5 
path=/org/freedesktop/PowerManagement/Inhibit; 
interface=org.freedesktop.PowerManagement.Inhibit; 
member=Inhibit
string "/usr/lib/chromium/chromium"
string "Playing audio"

--- chrome STOP ---

method call time=1662491440.828614 sender=:1.2340 -> 
destination=org.freedesktop.PowerManagement serial=9 
path=/org/freedesktop/PowerManagement/Inhibit; 
interface=org.freedesktop.PowerManagement.Inhibit; 
member=UnInhibit
uint32 6

method call time=1662491443.011514 sender=:1.2341 -> 
destination=org.freedesktop.PowerManagement serial=6 
path=/org/freedesktop/PowerManagement/Inhibit; 
interface=org.freedesktop.PowerManagement.Inhibit; 
member=UnInhibit
uint32 14

これはバグですか、それともVLC抑制を検出する方法はありますか?

答え1

私はあなたがそれを自分で見つけたと思いますが、ここに答えがあります。

VLCコール(あなたの例では):

  • Inhibitインターフェースとサービス方式org.freedesktop.ScreenSaver

クロム通貨(あなたの例では):

  • Inhibitインターフェースとサービス方式org.freedesktop.ScreenSaver
  • 他のもの(xfce関連)も呼び出します。org.freedesktop.ScreenSaver.Inhibit
  • Inhibitorg.freedesktop.PowerManagement.Inhibitサービスインターフェース方法org.freedesktop.PowerManagement.Inhibit

したがって、Chromeは実際には2つの異なるインターフェイス(ScreenSaverとPowerManagement)で3つの抑制ロックを取得しますが、VLCはScreenSaverインターフェイスでのみ抑制ロックを取得します。これら2つのインターフェースは、まったく異なる2つのサービスから来ました。サービスが正しく実装されていると仮定すると、これらのサービスはまったく異なる抑制されたロックセットを使用します。

(現在は廃止)システムがアイドル状態になるのを抑制するorg.freedesktop.PowerManagementのではなく、停止[*](CPU停止)のみを抑制します。 org.freedesktop.ScreenSaverこれは実際にアイドル操作を抑制します。これは通常、スクリーンセーバーが起動することを意味します。そして画面クリア)と一時停止(CPU停止)。


[*]:一つありますエラーレポートxfce-power-manager v. 1.6.1 の場合、org.freedesktop.PowerManagement.Inhibit実装は無効であり、以下を禁止します。返品スクリーンセーバー(システムがアイドル状態になるのを防ぐことができる)問題がまだ存在するため、最新のxfce-power-manager(4.19)にはまだバグが存在する可能性があります。

関連情報