Xubuntu 16.04 and XFCE Not Allowing Monitors to Sleep or Power Off
March 21, 2018
Posted by on
The answer is that Google Chrome disables (“inhibits”) sleeping when doing WebRTC communications. Unbelievable, right? Anyway. Here’s how to discover the cause.
First kill any instance of xfce4-power-manager running.
Then in a command window run:
me@myhost:~$ xfce4-power-manager --debug --no-daemon
TRACE[xfpm-dpms.c:75] xfpm_dpms_set_timeouts(): Settings dpms: standby=1200 suspend=0 off=3600
Now, try opening a Chrome browser, say, version 60.0.3112.90 (Official Build) (64-bit). Next open up a WebRTC webpage such as https://webrtc.github.io/samples/src/content/datachannel/basic/ and click Start on the demo page.
You will probably see the following appear in your command window:
TRACE[xfpm-inhibit.c:343] xfpm_inhibit_inhibit(): Inhibit send application name=/usr/bin/google-chrome-stable reason=WebRTC has active PeerConnections sender=:1.2387
TRACE[xfpm-inhibit.c:101] xfpm_inhibit_has_inhibit_changed(): Inhibit added
You can confirm that Chrome is using WebRTC for this page by visiting chrome://webrtc-internals/ and seeing the webpage(s) using WebRTC.
And if you close the offending tab you will see the following in your command window:
TRACE[xfpm-inhibit.c:357] xfpm_inhibit_un_inhibit(): UnHibit message received
TRACE[xfpm-inhibit.c:95] xfpm_inhibit_has_inhibit_changed(): Inhibit removed
At this point you have two choices:
- stop using Chrome altogether
- stop visiting that particular page that uses WebRTC in Chrome
The issue was discussed on this forum page and at this page.