Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

saver_xscreensaver broken with xscreensaver version 6+ #126

Open
themariusus opened this issue Apr 25, 2021 · 15 comments
Open

saver_xscreensaver broken with xscreensaver version 6+ #126

themariusus opened this issue Apr 25, 2021 · 15 comments

Comments

@themariusus
Copy link

My xscreensaver was a glslideshow, and because the saver_xscreensaver script calls the glslideshow binary directly it now fail with xscreensaver version 6+.

XIO:  fatal IO error 2 (No such file or directory) on X server ":0"
      after 217 requests (217 known processed) with 0 events remaining.
X connection to :0 broken (explicit kill or server shutdown).

I'm guessing xscreensaver does some magic before calling glslideshow that xsecurelock doesn't know about.

@doggodanubus
Copy link

glslideshow -debug from a terminal will show it's failing to load images. xscreensaver-getimage is supposed to be called to do that and it should pull up the picture folder but is not. I think you have to make a new root window, capture it's ID then call xscreensaver-getimage. I have no workaround. :(

@themariusus
Copy link
Author

I switched to saver_mpv for my image slideshow. mpv has less features than glslideshow but it does the job.
I don't think I'm going to switch back to xscreensaver.
I think I'm going to mark the issue as closed.
Thank you for your input.

@divVerent
Copy link
Contributor

divVerent commented May 23, 2021

Let's keep this issue open though as this is absolutely worth reproducing and fixing.

Screensavers that use xscreensaver-getimage are out of scope though, as they reveal screen content - the very thing xsecurelock tries to prevent.

@petersohn
Copy link

Since upgrading to xscreensaver 6, images fail to load for me too. I tried running the individual saver program (for example glslideshow or carousel) from terminal without arguments, images fail to load, although I get no error message. However, when I run it in a preview from xscreensaver-demo, the images load fine.

@ghost
Copy link

ghost commented Dec 4, 2022

I might have similar issue with xscreensaver+xsecurelock tried using export XSECURELOCK_SAVER=saver_xscreensaver and have xscreensaver running. But when I lock the screen screensaver won't show. I selected my screen saver with xscreensaver-settings . I use xscreensaver 6.05.1-2 with xsecurelock-1.8-0-1

@razor-x
Copy link

razor-x commented Dec 4, 2022

Not sure which issue should be preferred (or new issue?): #48

I might have similar issue with xscreensaver+xsecurelock tried using export XSECURELOCK_SAVER=saver_xscreensaver and have xscreensaver running. But when I lock the screen screensaver won't show. I selected my screen saver with xscreensaver-settings . I use xscreensaver 6.05.1-2 with xsecurelock-1.8-0-1

@tuxy I just happened to be trying to get this to work today on Arch and had the same issue.

I can confirm that /usr/lib/xsecurelock/saver_xscreensaver does not exist in the package contents. I tried to build xsecurelock locally, and confirmed that even with xscreensaver installed, xsecurelock ./configure does not detect it and thus does not include saver_xscreensaver in the build. (I also tried to force it with a flag, and even though I was able to get saver_xscreensaver in the local package, xsecurelock was unable to use it, giving xsecurelock: No saver selected. Giving up.).

image

@divVerent
Copy link
Contributor

Likely cause is a different saver location for xscreensaver 6.

@divVerent
Copy link
Contributor

Still working fine on Debian for me with this version:

$ apt policy xscreensaver
xscreensaver:
  Installed: 6.02+dfsg1-2+b1
  Candidate: 6.02+dfsg1-2+b1
  Version table:
 *** 6.02+dfsg1-2+b1 500
        500 http://deb.debian.org/debian bookworm/main amd64 Packages
        100 /var/lib/dpkg/status

Maybe distro-specific? If needed, I can change the configure.ac script to detect multiple paths for savers.

@mosbasik
Copy link

I'm still experiencing the same symptoms reported in #126 (comment) :

I tried running the individual saver program (for example glslideshow or carousel) from terminal without arguments, images fail to load, although I get no error message. However, when I run it in a preview from xscreensaver-demo, the images load fine.

And to be clear, other screensavers that don't try to read images from my disk (like, say, celtic) work fine!

My environment / versions:

  • Arch Linux
  • xscreensaver 6.08 (2023-10-10)
  • xsecurelock 1.9.0 (2023-12-19)

I think issue #48 was indeed the correct place for the comments made by the ghost and @razor-x above (which were about the missing saver_xscreensaver script). That script looks fine (it's present and executable) in my environment. This issue is about something different (namely, that the screensavers glslideshow and carousel aren't working).

@divVerent are you saying in #126 (comment) that on Debian, you are seeing that xsecurelock (via saver_xscreensaver) is able to launch glslideshow and successfully display images?

@mosbasik
Copy link

Researched a bit more. Agree with #126 (comment) that glslideshow and carousel both rely on xscreensaver-getimage to get the image data they display.

Maybe worth pointing out that xscreensaver-getimage gets the image data from one of three places according to the configs in .xscreensaver:

  1. screengrabs of the display
  2. frames from a video input (webcam etc) (xscreensaver-getimage-video)
  3. files from disk (xscreensaver-getimage-file).

Ofc (1) is not secure and in isolation it would make sense to keep it out of scope as per #126 (comment) , but the other two seem secure enough.

If this functionality is inextricably bundled together in xscreensaver-getimage, seems like the choice is between supporting one insecure and two secure configs, or none of them. Alternatively, maybe the fact that xscreensaver-getimage-file and xscreensaver-getimage-video exist means it's possible for xsecurelock to support only (2) and/or (3) via shims of some kind.

@rdiaz02
Copy link

rdiaz02 commented Apr 6, 2024

Still working fine on Debian for me with this version:

$ apt policy xscreensaver
xscreensaver:
  Installed: 6.02+dfsg1-2+b1
  Candidate: 6.02+dfsg1-2+b1
  Version table:
 *** 6.02+dfsg1-2+b1 500
        500 http://deb.debian.org/debian bookworm/main amd64 Packages
        100 /var/lib/dpkg/status

Maybe distro-specific? If needed, I can change the configure.ac script to detect multiple paths for savers.

It is not working for me under Debian: I get xsecurelock: No saver selected. Giving up.. Running xscreensave-demo (or xscreensaver-command -lock after starting xscreensaver) works. (I am killing the xscreensaver daemon before running xsecurelock).

$ apt policy xscreensaver
xscreensaver:
  Installed: 6.08+dfsg1-1
  Candidate: 6.08+dfsg1-1
  Version table:
     6.08+dfsg1-1+b1 300
        300 http://ftp.ch.debian.org/debian unstable/main amd64 Packages
 *** 6.08+dfsg1-1 900
        900 http://ftp.ch.debian.org/debian testing/main amd64 Packages
        900 http://deb.debian.org/debian testing/main amd64 Packages
        100 /var/lib/dpkg/status
     6.06+dfsg1-3 90
         90 http://ftp.ch.debian.org/debian stable/main amd64 Packages
         90 http://deb.debian.org/debian stable/main amd64 Packages

$ apt policy xsecurelock
xsecurelock:
  Installed: 1.9.0-1
  Candidate: 1.9.0-1
  Version table:
 *** 1.9.0-1 900
        900 http://ftp.ch.debian.org/debian testing/main amd64 Packages
        300 http://ftp.ch.debian.org/debian unstable/main amd64 Packages
        900 http://deb.debian.org/debian testing/main amd64 Packages
        100 /var/lib/dpkg/status
     1.5.1-1 90
         90 http://ftp.ch.debian.org/debian stable/main amd64 Packages
         90 http://deb.debian.org/debian stable/main amd64 Packages

@ct1n
Copy link

ct1n commented Apr 8, 2024

The Debian 12.5 xscreensaver package installs the screensavers under /usr/libexec/xscreensaver, but the xsecurelock package is configured using --with-xscreensaver=/usr/lib/xscreensaver.

I manually edited /usr/libexec/xsecurelock/saver_xscreensaver and updated the following line:

: ${XSECURELOCK_XSCREENSAVER_PATH:=/usr/libexec/xscreensaver}

@rdiaz02
Copy link

rdiaz02 commented Apr 9, 2024

Thanks! That solved it. (Searching for it now, I see this issue has been reported: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1068662 . I should have searched for it; apologies for the noise)

@ct1n
Copy link

ct1n commented Apr 9, 2024

It wasn't there before, I filed it after posting here.

@rdiaz02
Copy link

rdiaz02 commented Apr 9, 2024

Ah, thanks! 😅

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

8 participants