DBUS에서 VLC 억제를 감지하는 방법

DBUS에서 VLC 억제를 감지하는 방법

화면 보호기가 비활성화되어 있는지 확인하기 위해 Arch에서 xfce를 사용하려고 합니다.

이 명령은 크롬(chromium)이 다음을 억제할 때 작동합니다.

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은 실제로 서로 다른 두 인터페이스(ScreenSaver 및 PowerManagement)에서 세 가지 억제 잠금을 획득하는 반면, VLC는 ScreenSaver 인터페이스에서만 억제 잠금을 획득합니다. 이 두 인터페이스는 완전히 다른 두 서비스에서 왔습니다. 서비스가 올바르게 구현되었다고 가정하면 이러한 서비스는 완전히 다른 억제된 잠금 세트를 사용합니다.

(현재는 더 이상 사용되지 않음) 시스템이 유휴 상태로 들어가는 것을 억제하는 org.freedesktop.PowerManagement대신 정지[*](CPU 정지)만 억제합니다. org.freedesktop.ScreenSaver이는 실제로 유휴 작업을 억제합니다. 이는 일반적으로 화면 보호기가 시작됨을 의미합니다.그리고화면 지우기) 및 일시 중지(CPU 정지).


[*]:하나 있습니다오류 보고서xfce-power-manager v. 1.6.1의 경우 org.freedesktop.PowerManagement.Inhibit구현이 올바르지 않으며 다음을 금지합니다.반품화면 보호기(시스템이 유휴 상태가 되는 것을 방지할 수 있음) 문제가 여전히 존재하므로 최신 xfce-power-manager(4.19)에 버그가 여전히 존재할 수 있습니다.

관련 정보