Workaround? Screensaver on multi-head display treats each head as a separate display on KDE

Hi All,

The interesting thing about this is that if you click on the “test” button on the screen saver set up it works correctly in that the screen saver will transverse all your displays as one image or scene. It’s only when the screen saver turns on by itself that replicates the scene on each screen separately.

I came across this bug and it’s on bugzilla but it’s been around since version 12 and there’s no reason for it to be a priority to fix so I was wondering if anyone would know a workaround?

It’s seems to me that since it works as desired when you click on the “test” button that perhaps just a change in a text file in /etc/ or ~/.kde4 somewhere might make this work when the screen saver comes normally after an inactivity timeout but I have no idea where to look for such a thing. Or, perhaps there’s replacement screen saver program that could be in place of the one that comes standard?

Anyway, if someone knows a workaround it would be appreciated.

Thanks,
Reg

And you ask that workaround for which version of openSUSE and which Desktop Environment?

I have experienced the same issue after upgrading to 13.1 but didn’t care too much yet.
However if someone knows the solution i would be grateful to have it shared.

OpenSuse 13.1
KDE 4.11.5
2 x GeForce GTX560Ti with 4 Monitors (7680x1200 pixels total)
nvidia proprietary driver

The latest, OS 13.2 on KDE (you see I mentioned ~/.kde4 above) but it looks from @karlheinrich that it crept in at 13.1 however if you look at the bug at bugzilla (link in first message) it has been around since version 12.

It’s described upstream by this kde.org bug report.

This is pertinent…

The screen locker architecture changed with Plasma 5. The classic screen savers are no longer supported. The 4.x series won’t see any further feature development, so this bug report won’t be implemented as it doesn’t apply to our current version any more.

I want to thank you for your bug report and for helping improving the quality of our software and I’m sorry that we were not able to provide a fix before we retired the affected component.

Are you sure that link you gave is to the bug? It looks like something perhaps related but not the actual same issue. Also, the text you quoted I didn’t see on that bug.

That being said, assuming this is in the “won’t fix” category. Does anyone know of a replacement screensaver we could use that perhaps would work?

Alternatively, I noticed: ./share/config/kscreensaverrc had these settings:

[ScreenSaver]
ActionBottomLeft=0
ActionBottomRight=0
ActionTopLeft=0
ActionTopRight=0
LegacySaverEnabled=true
Lock=false
LockGrace=300000
PlasmaEnabled=false
Saver=atlantis.desktop
Timeout=60

so maybe in this file or another there’s a settings change that would make it work?

I played around with this a little but didn’t see any changes. Specifically I changed LegacySaverEnabled=true to false and PlasmaEnabled=false to true. However, I don’t know if there is a service or something you are have restart for the changes to take effect so perhaps they could have an effect if I knew what else to do.

Apparently when you change the configuration file ./.kde4/share/config/kscreensaverrc this line

qdbus org.kde.screensaver /ScreenSaver configure

will get the changes to take effect. Unfortunately

qdbus org.kde.screensaver /ScreenSaver test

doesn’t start do the same as clicking on the test button as that could have been useful for a workaround.

Logging out and then back in should restart things in the desktop. Sorry have no clue about the problem

No it doesn’t.
You can run the screensavers directly though.
E.g.:

kxsrun atlantis

I’m not sure at the moment how to get them to run in fullscreen, it’s been a while since I looked at the kscreensaver source code, but I don’t think it’s really possible that way. It is possible to specify the window id in which the screensaver runs (via the “-window-id” switch(, IIRC the screensaver KCM just creates a fullscreen window and passes its id to the screensaver via the command line when running it.
You would have to do the same somehow.

I don’t think there is a solution for your original problem though. AFAIK, it is by design that KDE4 runs a separate screensaver/screenlocker instance on every monitor. And as KDE4 is nearing its end-of-life, and Plasma5 doesn’t support screensavers at all, this won’t be changed by the developers any more either as mentioned.

You could probably disable KDE’s screensaver and use xscreensaver directly (KDE just runs xscreensaver’s screensavers anyway if you configure it to use legacy screensavers).
Run “xscreensaver-demo” to configure it.

And/or have a look here:
https://forum.kde.org/viewtopic.php?f=289&t=124413&p=333841
(replace “glmatrix” with “atlantis” to run the atlantis screensaver, and for just running the screensaver remove the mplayer things, that’s just for playing some background music…)
Or just run “kstart --fullscreen /usr/lib/xscreensaver/atlantis” (“kstart --fullscreen /usr/lib64/xscreensaver/atlantis” on a 64bit system) as also suggested in that post.

PS: “kstart --fullscreen kxsrun atlantis” would work as well.
But I have no idea how all of that would behave on multi-monitor setups, i.e. whether it would span across all screens or not.

Maybe there would be a way to modify the multi-screen config to make it appear as one screen or something like that?
But I have to pass here. I never used more than one screen myself.

Nope, appears only on the screen it was started for.

I somehow suspected this.
And that’s probably the reason why KDE’s screenlocker starts a separate instance on each screen.

So IMHO you have two options:

  • forget about it
  • somehow change your monitor setup accordingly, but I have no idea how.

If you do have an xorg.conf, you should try to disable the “KScreen 2” service in “Configure Desktop”->“Startup and Shutdown”->“Service Manager”.KScreen ignores Xorg’s settings and overrides them with its own.

But to avoid confusion here: does it “work” for you when you press “Test” in KDE’s screensaver settings? Reg_gie said it did for him.
It’s not clear whether you both have exactly the same setup, and you don’t even use the same versions anyway. There have been changes regarding this after KDE Workspace 4.11.5 that is included in openSUSE 13.1.

I’m inclined to forget about it until they add screen savers back into the new architecture since as I don’t really feel like fighting against the technology’s incompatibilities, with one other avenue to explore first.

Does anyone remember how to use strace? If I remember correctly what it does then we should be able use strace to see the command that using the Test button issues. Then we could just mimic it. If it’s not possible to see what that button is doing under the hood then I’m going to call it a day.

It’s unlikely that support for legacy screensavers will ever be added back. They won’t work on Wayland anyway.
There might be some “animations” (whatever that means) added to Plasma5’s screenlocker, but I’m not aware of any work on that currently going on.

Does anyone remember how to use strace? If I remember correctly what it does then we should be able use strace to see the command that using the Test button issues. Then we could just mimic it. If it’s not possible to see what that button is doing under the hood then I’m going to call it a day.

No need to use strace, this is open source:
https://projects.kde.org/projects/kde/kde-workspace/repository/entry/kcontrol/screensaver/scrnsave.cpp?rev=KDE%2F4.11#L684

As I said, it doesn’t just call a simple command. It creates a full screen window and then runs the screensaver and passes the window id to that on the command line.
And of course it has to listen for events in that window it created, to stop the screensaver again when you press the mouse button.
Nothing that you can do with just running a simple command.