XScreenSaver 6.01 out now

XScreenSaver 6.01 is out now. This is an X11-only maintenance release, so there are no macOS, iOS or Android packages this time around.

The 6.00 refactor of the X11 XScreenSaver daemon has so far proven to be very stable and secure! The bugs fixed in this release are relatively minor. However:

  • If you are using 6.00, I strongly recommend upgrading to 6.01.
  • If you are using 5.xx, I strongly, strongly recommend upgrading to 6.01.

Sadly, due to recent catastrophic decision-making on the part of certain Linux distros, I was forced to add the following section to the XScreenSaver manual:

THE WAYLAND PROBLEM

Wayland is a completely different window system that is intended to replace X11. After 13+ years of trying, some Linux distros have finally begun enabling it by default. Most deployments of it also include XWayland, which is a compatibility layer that allows some X11 programs to continue to work within a Wayland environment.

Unfortunately, XScreenSaver is not one of those programs.

If your system is running XWayland, XScreenSaver will malfunction in two ways:

  1. It will be unable to detect user activity in non-X11 programs. This means that while a native Wayland program is selected, XScreenSaver will think that you are idle, and may blank the screen prematurely.

  2. It will be unable to lock the screen. This is because X11 grabs don't work properly under XWayland, so there is no way for XScreenSaver to prevent the user from switching away from the screen locker to another application.

If you are aware of some way for XScreenSaver to reliably detect user activity under Wayland, do let me know. Maybe there is some dbus/systemd signal that I have missed?

Now that the XScreenSaver 6.x daemon has been sandboxed and massively reduced in size, it might be plausible for someone to rewrite xscreensaver.c to speak Wayland instead of X11, to run inside the Wayland compositor, and then to launch the X11 programs xscreensaver-auth and xscreensaver-gfx as needed. But that someone will not be me.

Previously, previously.

Tags: , , , , , ,

4 Responses:

  1. Baloo Uriza says:

    The best way to deal with Wayland is not to support it at all.

  2. xrayspx says:

    Fantastic. It's super smooth now. I assume the change in password-entry glyphs from asterisks to rectangles from beta 2 to 6.00 was intentional?

    I noticed the other day that KDE recently re-introduced user switching and new sessions from a locked screen (using their screen locker). The test you have for that (kdmctl reserve) doesn't seem to be a thing anymore, and I haven't had time to look for what they're doing instead just yet. I think it's going to involve using sddm-greeter, but I haven't figured out how to make it go just yet.

  3. Nick Alcock says:

    People don't say thank you for good software enough, so: thank you! This is a distinctly nicely-thought-out redesign and works perfectly as far as I can tell, despite my using the sort of crazy tangled PAM-abusive configuration which could break almost anything.

    (Suffice to say that thanks to my PAM modules, some custom, everything doing authentication on my system ultimately links to libcurl, all of libcurl's deps, libperl (!) and talks over USB and HTTP to a remote system when authenticating. I keep on meaning to rewrite the libperl bit to use lua or something else less huge instead... but then I'd have to rewrite all the related scripting too.)

    xscreensaver is now not the biggest program on my system that uses PAM! :) mind you, thanks to QEMU and PostgreSQL, that wasn't even close to true in 5.x either. What the hell is QEMU doing using PAM?! ... oh, VNC SASL auth. Sheesh.

Leave a Reply

Your email address will not be published. But if you provide a fake email address, I will likely assume that you are a troll, and not publish your comment.

You may use these HTML tags and attributes: <a href="" title=""> <b> <blockquote cite=""> <code> <em> <i> <s> <strike> <strong> <img src="" width="" height="" style=""> <iframe src="" class=""> <video src="" class="" controls="" loop="" muted="" autoplay="" playsinline=""> <div class=""> <blink> <tt> <u>, or *italics*.

  • Previously