スクリーンセーバーが無効になっていることを確認するために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
Inhibit
org.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)にはまだバグが存在する可能性があります。