View previous topic :: View next topic |
Author |
Message |
yuri69 n00b
Joined: 17 Apr 2017 Posts: 15 Location: /home/lxuser
|
Posted: Sat Dec 21, 2024 11:22 am Post subject: Prevent XScreenSaver from flashing unlocked screen |
|
|
Hi,
I've been using x11-misc/xscreensaver for a while on my laptop. It's fast and seems to be a bit more secure than the rest of common screen lock apps. But there is one thing...
I simply can't configure it well enough to prevent it from showing the unlocked screen for a very brief period (500ms?) before it shows the lock screen itself. This happens after I wake the laptop up from sleep but it doesn't occur every time - it's like 50:50.
The setup is systemd + i3wm with the screensaver being started by auto-running:
Code: | xscreensaver --no-splash |
It feels like the system goes to sleep before the saver has a chance to lock itself. Is there anybody else using XScreenSaver on a similar setup? |
|
Back to top |
|
|
Hu Administrator
Joined: 06 Mar 2007 Posts: 22867
|
Posted: Sat Dec 21, 2024 2:05 pm Post subject: |
|
|
This is an inherent problem with a screensaver / screenlocker that is not integrated in the rendering path. At the time you enter suspend, you were recently active, so the screen is correctly not blanked. When you resume, your X server is restored and begins rendering to the screen, showing whatever you had open. Soon afterward, but not instantly, the kernel will get around to scheduling xscreensaver, which will notice that the current time says you have been idle for hours, and will react by blanking / locking the screen. As you observed, this may or may not be fast enough to happen before Xorg renders to the monitor. The typical solution to this is that you need to run xscreensaver-command -lock on the suspend path, so that the screen is already blanked and locked before you enter suspend, and is still that way when you resume. |
|
Back to top |
|
|
yuri69 n00b
Joined: 17 Apr 2017 Posts: 15 Location: /home/lxuser
|
Posted: Sun Dec 22, 2024 10:42 am Post subject: |
|
|
Hu wrote: | The typical solution to this is that you need to run xscreensaver-command -lock on the suspend path, so that the screen is already blanked and locked before you enter suspend, and is still that way when you resume. |
Thanks for the reply.
I thought this was there reason for xscreensaver spawning the xscreensaver-systemd DBus-connected utility. Its description IMO fits here:
Quote: | When the system is about to go to sleep (e.g., the laptop lid has just been closed) it locks the screen just before the system sleeps, by running xscreensaver-command --suspend. When the system wakes up again, it runs xscreensaver-command --deactivate to make the unlock dialog appear immediately. It does this through the org.freedesktop.login1(5) D-Bus interface. |
When I run the saver as --verbose it seems to log the pre-suspend action correctly:
Code: | xscreensaver-systemd: 11:33:29: exec: xscreensaver-command --verbose -suspend |
Is this unrelated? |
|
Back to top |
|
|
Hu Administrator
Joined: 06 Mar 2007 Posts: 22867
|
Posted: Sun Dec 22, 2024 2:47 pm Post subject: |
|
|
Yes, that mechanism is intended to address this issue. It's optional though, and it did not occur to me to check whether you were using it. If you run that command manually, does it consistently blank the screen before the shell prompt returns? I speculate, with no data to support this, that the screen blanking may initiate immediately, but not finish before the system enters suspend. |
|
Back to top |
|
|
yuri69 n00b
Joined: 17 Apr 2017 Posts: 15 Location: /home/lxuser
|
Posted: Sun Dec 22, 2024 3:00 pm Post subject: |
|
|
Hu wrote: | I speculate, with no data to support this, that the screen blanking may initiate immediately, but not finish before the system enters suspend. |
Indeed, it seems the blanking effect is not immediate and might not finish on time.
Code: | $ time xscreensaver-command --verbose -suspend
xscreensaver-command: suspending
real 0m1.188s
user 0m0.000s
sys 0m0.005s |
|
|
Back to top |
|
|
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
|