Go to preferences, ensure the option is checked.
Play some media...... screensaver kicks in - (is not inhibited)
WORKAROUND - Keep preferences window open, start playing media and change option off to on (or if it was off - then just change it to on).
Then, the screensaver is inhibited.
It will remain inhibited while there is media in the play window (ie, Pause, back, forward).
But, if you STOP or load/play different media - then you have to repeat the change of state of the option (to on) again.
It looks like the function "parole_screen_saver_inhibit" is ONLY invoked from the subroutine "parole_player_reset_saver_changed". If I am correct
(a big "If", as I am only a novice and this is my first ever attempt at a bug report/post) --- and the "parole_player_reset_saver_changed" is only invoked when the user clicks the option - then that would explain the behavior I am seeing.
I apologize for not being able to discern further what a suitable remedy would be.
For myself, I have written a shell script replacement that preserves the screensaver settings of X, turns the screensaver off, calls parole and when parole closes - resets the screensaver settings.
But, it is nothing like as elegant as turning off the screensaver only when media is loaded/playing - which (I believe) is the program's intent.
Oh yes, the ABOUT box says " xfce 4.6.1" as well as "parole version 0.2.0.2".
Thanks for the report, we'll look into it.
*** Bug 8566 has been marked as a duplicate of this bug. ***
*** Bug 8440 has been marked as a duplicate of this bug. ***
*** Bug 6453 has been marked as a duplicate of this bug. ***
Unfortunately, it seems the workaround does not even work any more, with or without the power manager plugin.
This will require quite a bit of reworking.
I can confirm I have the same problem (as do some others, like here: https://bbs.archlinux.org/viewtopic.php?id=137536). I'm running xfce 4.10 (Xubuntu 12.10 amd64) which comes with Parole 0.3.0.3.
Forgot to mention, I've also tried the power manager plugin in Parole, with no luck.
Talked with ochosi briefly last night, and it seems like the best way to solve this would be faking key events, probably every minute(The lowest you're allowed to set a screensaver to, in everything I've seen.) He pointed me to totem but I can't seem to find a reference in there with grep, so I'm just going to play around with event sending and see if I can keep them from starting without changing anything that the user sees.
Maybe you can look at the code of Caffeine (which I'm currently using as workaround): http://bazaar.launchpad.net/~caffeine-developers/caffeine/main/view/head:/caffeine/core.py As far as I can see, Caffeine is just identifying the power management mechanism and then sending a signal (or running a command) to prevent sleep mode.
Yeah, that appears to actually be what you need to do. At least xscreensaver is actually distinguishing between real and fake events.
The bug is nearly solved now. turns out that there's a freedesktop specified screensaver controller(xdg-screensaver) that does everything we need. The only catch is that it requires that we supply the window's X id, which seems to be a bit annoying to track down in GTK. Working on that now.
I have this bug fixed. just need to figure out how to revert my git tree to its initial state so that I can get a good patch(any pointers on this? never worked with diff/patch before)
Created attachment 4804
add screensaver inhibit/uninhibit support
This should do it. The only thing that I find iffy is that I hardcoded 12 as the max length of an X window id, anyone know how long they actually go? I'd rather not have this segfaulting when you have a lot of windows open.
Some notes on your patch (please note that I'm not the maintainer):
1) See git format-patch to produce a clean patch, the current patch is hard to read and apply.
2) Instead of using GTK_WIDGET(window)->window, use gtk_widget_get_parent_window. That way, the code will compile even when building with GSeal enabled and the code is far more readable.
3) See g_strdup_printf to avoid making assumptions on the size of the window X ID.
Thanks Tekk for the patch, it works great! I've tweaked it a bit as Jérôme suggested, with the exception of one part.
Jérôme, you suggest using gtk_widget_get_parent_window, which according to the documentation, should return a GdkWindow. However, it's returning a GdkDrawable, which cannot be casted to a GdkDrawable for one reason or another.
I've applied the tweaked patch to git-master if you'd like to take a look. The command that does work is:
cmd = g_strdup_printf("xdg-screensaver suspend %d", (int)GDK_WINDOW_XID(GDK_WINDOW(GTK_WIDGET(window)->window)));
And the one that doesn't:
cmd = g_strdup_printf("xdg-screensaver suspend %d", (int)GDK_WINDOW_XID(GDK_WINDOW( gtk_widget_get_parent_window(GTK_WIDGET(window)) )));
Created attachment 4806
Fix the command to get the XID of a GtkWindow
Right, this is how I would do it then.
Thanks for the cleanup there Jérǒme, new to glib so I didn't know about g_strdup_printf nor git format-patch.
Thanks both of you for your patches. I think it's safe to say that this issue is finally resolved. The latest code is now available in git-master.
Tekk: I don't blame you! You did a nice job with this!