xflock4 needs a 'sleep 1' before 'xset dpms force off' to prevent backlight from immediately reactivating

Bug #1802138 reported by Chris Rainey
8
This bug affects 1 person
Affects Status Importance Assigned to Milestone
Xfce4 Session
In Progress
Medium
xfce4-session (Ubuntu)
Triaged
Undecided
Unassigned

Bug Description

Without a 'sleep 1' before +dpms command, slock or xtrlock, etc. will cause a laptop backlight to immediately reactivate.

    description: Notebook
    product: 4180AP3
    vendor: LENOVO
    version: ThinkPad T420

     *-firmware
          description: BIOS
          vendor: LENOVO
          physical id: d
          version: 83ET82WW (1.52 )
          date: 06/04/2018
          size: 128KiB
          capacity: 8128KiB
          capabilities: pci pnp upgrade shadowing cdboot bootselect edd int13floppy720 int5printscreen int9keyboard int14serial int17printer int10video acpi usb biosbootspecification

        *-display
             description: VGA compatible controller
             product: 2nd Generation Core Processor Family Integrated Graphics Controller
             vendor: Intel Corporation
             physical id: 2
             bus info: pci@0000:00:02.0
             version: 09
             width: 64 bits
             clock: 33MHz
             capabilities: msi pm vga_controller bus_master cap_list rom
             configuration: driver=i915 latency=0
             resources: irq:26 memory:f0000000-f03fffff memory:e0000000-efffffff ioport:4000(size=64) memory:c0000-dffff

ProblemType: Bug
DistroRelease: Ubuntu 18.10
Package: xfce4-session 4.12.1-3ubuntu4 [modified: usr/bin/xflock4]
ProcVersionSignature: Ubuntu 4.18.0-10.11-generic 4.18.12
Uname: Linux 4.18.0-10-generic x86_64
ApportVersion: 2.20.10-0ubuntu13
Architecture: amd64
CurrentDesktop: XFCE
Date: Wed Nov 7 10:11:37 2018
InstallationDate: Installed on 2018-11-04 (2 days ago)
InstallationMedia: Xubuntu 18.10 "Cosmic Cuttlefish" - Release amd64 (20181017.2)
SourcePackage: xfce4-session
UpgradeStatus: No upgrade log present (probably fresh install)

Revision history for this message
In , Chris Bainbridge (chris-bainbridge) wrote :

As noted at http://www.shallowsky.com/linux/x-screen-blanking.html calls to "xset dpms" need to be prefixed with "sleep 1":

    will blank the screen (or activate the screensaver program, if you're using
    one) after a delay of one second. You need the delay because X gets a little
    confused about the order of events; it will blank the screen but immediate
    un-blank it, thinking the activity of your typing the command happened
    recently enough to come out of screensaver mode.

    sleep 1; xset dpms force off

    will turn the screen OFF after a delay of one second. You can also use
    standby, suspend, or on instead of off.

Downstream bug report: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=776674

Revision history for this message
In , Chris Bainbridge (chris-bainbridge) wrote :

Created attachment 5915
xflock4-sleep.patch

Revision history for this message
In , Steve Dodier-Lazaro (sidi) wrote :

I can reproduce the issue, but the patch does not work for me (Xfce 4.11, ArchLinux 64 bits, xscreensaver 5.32).

@OP, what screensaver do you use, and does the patch work for you?

@Other triagers, could you please test the patch?

Revision history for this message
In , Chris Bainbridge (chris-bainbridge) wrote :

@Steve Yes the patch works for me using slock.
What exactly fails for you?
Does "sleep 1; xset dpms force off" successfully turn off the monitors on your system?
Do you have one of {xscreensaver-command,light-locker-command,gnome-screensaver-command} installed? If so, the xset dpms line in xflock4 is never executed.

(can't seem to change bug status back from needinfo..)

Revision history for this message
In , Steve Dodier-Lazaro (sidi) wrote :

Hi Chris,

When I type xset dpms force off in a terminal, my screen is turned off. Xflock4, with or without delay, always fails to turn my screen off. I believe the screensaver is the culprit, it probably talks to the X11 server and causes it to wake up.

Revision history for this message
In , Steve Dodier-Lazaro (sidi) wrote :

Errata; after uninstalling xscreensaver, the patch still does not work.

Revision history for this message
In , Chris Bainbridge (chris-bainbridge) wrote :

Can you try "slock & sleep 1; xset dpms force off"

Also try "sh -x /usr/bin/xflock4" and see if the xset line is actually being executed. It won't be if you have xscreensaver, light-locker or gnome-screensaver installed.

Revision history for this message
In , Steve Dodier-Lazaro (sidi) wrote :

Ok, I've been a bit silly on that one. So, when having slock installed I reach this code path.

With the patch: 1 second delay, then a black screen
Without the patch: black screen immediately

Now, on desktops, when using a mouse, it's quite easy to trigger the mouse after the screen has been forced off. Still, a whole second is a bit excessive.

I'd like more developers to weight in before applying the patch.

Revision history for this message
In , Steve Dodier-Lazaro (sidi) wrote :

Chris, thanks for writing the patch and bearing with me though. Of course if you can link to others complaining about the issue, and to more precise reasons why it is systematically happening for you, it'll increase the odds of people weighing in favour of your patch.

Revision history for this message
In , Chris Bainbridge (chris-bainbridge) wrote :

> With the patch: 1 second delay, then a black screen
> Without the patch: black screen immediately

slock will always show a black screen but is the monitor actually turned off with DPMS - my monitor shows "Entering power save mode" when this happens and turns off the back light.

Try this: in a terminal type "xset dpms force off" and press and hold the enter key for one second before releasing it. The key press event will cause the execution of the xset command, but then the release event will wake the monitor back up. The same happens with the ctrl-alt-delete shortcut.

> Of course if you can link to others complaining about the issue

http://www.shallowsky.com/linux/x-screen-blanking.html
http://askubuntu.com/questions/38776/trigger-screensaver-off-monitor
https://wiki.archlinux.org/index.php/Display_Power_Management_Signaling
http://ubuntuforums.org/showthread.php?t=1317747&page=4
http://unix.stackexchange.com/questions/4466/screen-turns-on-automatically-xset-dpms-force-off

The explanation:

"You're using it manually from command line or xset is binded to some keyboard shortcut? On my brother laptop this command was binded to some keys and after that monitor was turned off and on again, because when he was releasing key next event was emitted. Turning it off after quick sleep solved problem: perl -e 'select(undef,undef,undef,.1)' && xset dpms force off - this perl expression do sleep for 0.1 sec."

The timeout has to be longer than the delay between a person pressing the enter key and then releasing it.

Revision history for this message
In , Rgm-b (rgm-b) wrote :

Also see:

https://bugzilla.redhat.com/show_bug.cgi?id=1175015

This is a real pain with my notebook screen not going off when locked. In a hotel room at night, I have to put a towel over the screen to get to sleep myself! When at my desk at home, the external monitor is brightly lit when locked, lighting up the whole room at night.

I am concerned about long-term effects on the backlight feature failing if not corrected.

Since I am running Fedora 21, please let me know what I have to do to test a patch.

thank you

Revision history for this message
In , Rgm-b (rgm-b) wrote :

Same problem with:

Fedora-Xfce-armhfp-22-20150223-sda.raw.xz

On my Cubietruck through its VGA adapter. I probably will get around to testing with HDMI tomorrow as well as testing on my Cubieboard2.

The usual: You set screensaver to use a blank screen, and lock the screen.

Screen blanks, but backlight stays on.

Revision history for this message
Chris Rainey (ckrzen) wrote :
Revision history for this message
In , Chris Rainey (ckrzen) wrote :

Still happening in Xubuntu 18.10. I vote for adding the patch!

$ hostnamectl
   Static hostname: CKR-2
         Icon name: computer-laptop
           Chassis: laptop
        Machine ID: 5c61c71187fa4ba4aa26bdd89516ee5a
           Boot ID: 9a2e3fb61f6d461d9b423cdeebaa4c57
  Operating System: Ubuntu 18.10
            Kernel: Linux 4.18.0-10-generic
      Architecture: x86-64

Revision history for this message
Ubuntu Foundations Team Bug Bot (crichton) wrote :

The attachment "sleep added." seems to be a patch. If it isn't, please remove the "patch" flag from the attachment, remove the "patch" tag, and if you are a member of the ~ubuntu-reviewers, unsubscribe the team.

[This is an automated message performed by a Launchpad user owned by ~brian-murray, for any issues please contact him.]

tags: added: patch
Changed in xfce4-session:
importance: Unknown → Medium
status: Unknown → In Progress
Revision history for this message
In , Simon Steinbeiß (ochosi) wrote :

@Chris: Does a sleep of <1sec also work?

I personally side with Steve regarding the excessive nature of adding a full second. Otherwise I'm ok with merging this patch.

Revision history for this message
In , Chris Rainey (ckrzen) wrote :

@Simon: apologies, if your previous comment is directed at me. I'm currently on Ubuntu 19.04(Gnome 3) without a proper XFCE4 installation to test this on.

Revision history for this message
In , Jarno Suni (jarnos) wrote :

Maybe some implementations of sleep do not allow non-integer number argument.

Revision history for this message
In , Jarno Suni (jarnos) wrote :

I do not see a problem in having even longer delay than a second. But, using "sleep 1; xset dpms force off" has still the problem that user may accidentally touch something so that display will become on again. Besides, it effectively disables Presentation mode user may have set using Power manager's panel item.

A better solution would be to change DPMS settings for the time such a screen locker is running to enable turning display off after reasonable time of inactivity from user, and restore previous settings, when user unlocks. This is possible by using a wrapper script.

I have actually introduced such a version of xflock4 in bug report https://bugzilla.xfce.org/show_bug.cgi?id=10217
attachment
https://bugzilla.xfce.org/attachment.cgi?id=7254
in 2017. It uses 15 second delay, but an initial delay of 1 second could be added.

That script has other modifications such as added screensavers and lockers and optionally using display power management for the locker user may have set in Xfconf. The script can be simplified notably, if hacking the DPMS settings for general lock command set in Xfconf is left out.

I have never got any feedback about the script.

Note: proper screensavers (that have a daemon running when lock command is called) should handle DPMS by themselves.

Revision history for this message
In , Jarno Suni (jarnos) wrote :

Created attachment 9348
improved xflock4

Note that even this improved xflock4 script never gets past xfce4-screensaver-command, because of bug 15945 which should be fixed ASAP. That is, if xfce4-screensaver is installed.

Revision history for this message
Sean Davis (bluesabre) wrote :
Changed in xfce4-session (Ubuntu):
status: New → Triaged
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.