jellyfin / jellyfin-media-player

Jellyfin Desktop Client
GNU General Public License v2.0
2.96k stars 301 forks source link

Handle DPMS signaling. #267

Open Ingvix opened 2 years ago

Ingvix commented 2 years ago

Is your feature request related to a problem? Please describe. I was wrong about the DPMS screensaver blocking CEC signals in https://github.com/jellyfin/jellyfin-media-player/issues/265. They work just fine, but DPMS does not register them as user input and turn off the screensaver. The screensaver also turns on even when there's playback going on in JMP.

Describe the solution you'd like I think JMP should let X server know not to turn the screensaver on when playback is active, as I believe MPV does. Not sure if it's usually a job for the DE/WM which isn't present when you're running JMP in a standalone session but in any case, I believe it would be a good feature for JMP to be able to handle it itself. Upon input from HDMI-CEC and possibly other input devices that DPMS does not register by default, JMP should tell X to turn off the screensaver or reset the timeout if the screensaver is not on.

Describe alternatives you've considered Currently you pretty much need to disable DPMS and its screensaver. The problem with this is the TV/display doesn't then know to go to standby mode unless user sets it so. This then can lead to wasting a lot of electricity as the display device stays active.

Awkor commented 2 years ago

I had a similar issue and looked at the source code. JMP can be compiled to use either D-Bus or xdg-screensaver to handle the screensaver. The file where this choice is made is here. So, in my case, I was using a version compiled to use D-Bus, but D-Bus was not installed in my system. Compiling with the appropriate flag (-DLINUX_X11POWER=ON) fixed the issue for me.

To be sure, you can check the logs (in my case, they were in ~/.local/share/jellyfinmediaplayer/logs/jellyfinmediaplayer.log) and grep for Power. If you see something along the lines of [ ERROR ] PowerComponentDBus.cpp @ 126 - doDisableScreensaver : failed to retrieve interface. then you are having the same issue I had. Otherwise, if you have the compiled version with the -DLINUX_X11POWER=ON flag, you need to have xdg-screensaver installed, which should be under the xdg-utils package in most distros.