forked from pool/xdg-utils
Accepting request 126281 from X11:common:Factory
Fixing bug "xdg-screensaver suspend WindowID does not inhibit screensaver" https://bugzilla.novell.com/show_bug.cgi?id=559110 Adds 3 patches: http://cgit.freedesktop.org/xdg/xdg-utils/commit/?id=7465b22a95e9a28e3f4960e6ea40a4abeca1c2e9 http://cgit.freedesktop.org/xdg/xdg-utils/commit/?id=666d65cae0f2e66d33ec0dc48c054afbf16c9e3f http://patch-tracker.debian.org/patch/series/view/xdg-utils/1.1.0~rc1+git20111210-6/xdg-screensaver-new-gnome.diff Depends on perl-X11-Protocol Request 121743 to complete first: https://build.opensuse.org/request/show/121743 (forwarded request 121894 from vargusz) OBS-URL: https://build.opensuse.org/request/show/126281 OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/xdg-utils?expand=0&rev=24
This commit is contained in:
commit
69fc8fe1df
83
xdg-screensaver-gnome-dbus.diff
Normal file
83
xdg-screensaver-gnome-dbus.diff
Normal file
@ -0,0 +1,83 @@
|
||||
Source of the patch: http://cgit.freedesktop.org/xdg/xdg-utils/commit/?id=666d65cae0f2e66d33ec0dc48c054afbf16c9e3f
|
||||
--- scripts/xdg-screensaver 2012-05-21 12:55:11.846122671 +0200
|
||||
+++ scripts/xdg-screensaver 2012-05-21 12:58:36.269876261 +0200
|
||||
@@ -613,16 +613,18 @@
|
||||
|
||||
screensaver_gnome()
|
||||
{
|
||||
-# TODO
|
||||
-# There seems to be a DBUS interface for gnome-screensaver
|
||||
-# See http://lists.mplayerhq.hu/pipermail/mplayer-dev-eng/2006-April/042579.html and
|
||||
-# http://cvs.gnome.org/viewcvs/gnome-screensaver/src/gs-listener-dbus.c?rev=1.36&view=log
|
||||
-# A problem seems to be that Inhibit is tied to the lifetime of the DBUS appname and
|
||||
-# this can not be used from a script
|
||||
+# DBUS interface for gnome-screensaver
|
||||
+# http://people.gnome.org/~mccann/gnome-screensaver/docs/gnome-screensaver.html
|
||||
case "$1" in
|
||||
suspend)
|
||||
- screensaver_suspend_loop gnome-screensaver-command --poke
|
||||
- result=0
|
||||
+ screensaver_suspend_loop \
|
||||
+ dbus-send --session \
|
||||
+ --dest=org.gnome.ScreenSaver \
|
||||
+ --type=method_call \
|
||||
+ /org/gnome/ScreenSaver \
|
||||
+ org.gnome.ScreenSaver.SimulateUserActivity \
|
||||
+ 2> /dev/null
|
||||
+ result=$?
|
||||
;;
|
||||
|
||||
resume)
|
||||
@@ -631,7 +633,13 @@
|
||||
;;
|
||||
|
||||
activate)
|
||||
- gnome-screensaver-command --activate > /dev/null 2> /dev/null
|
||||
+ dbus-send --session \
|
||||
+ --dest=org.gnome.ScreenSaver \
|
||||
+ --type=method_call \
|
||||
+ /org/gnome/ScreenSaver \
|
||||
+ org.gnome.ScreenSaver.SetActive \
|
||||
+ boolean:true \
|
||||
+ 2> /dev/null
|
||||
result=$?
|
||||
;;
|
||||
|
||||
@@ -642,18 +650,31 @@
|
||||
|
||||
reset)
|
||||
# Turns the screensaver off right now
|
||||
- gnome-screensaver-command --deactivate > /dev/null 2> /dev/null
|
||||
+ dbus-send --session \
|
||||
+ --dest=org.gnome.ScreenSaver \
|
||||
+ --type=method_call \
|
||||
+ /org/gnome/ScreenSaver \
|
||||
+ org.gnome.ScreenSaver.SimulateUserActivity \
|
||||
+ 2> /dev/null
|
||||
result=$?
|
||||
;;
|
||||
|
||||
status)
|
||||
- result=0
|
||||
- if [ -f "$screensaver_file" ] ; then
|
||||
- echo "disabled"
|
||||
- elif gnome-screensaver-command --query > /dev/null 2> /dev/null; then
|
||||
+ status=`dbus-send --session \
|
||||
+ --dest=org.gnome.ScreenSaver \
|
||||
+ --type=method_call \
|
||||
+ --print-reply \
|
||||
+ --reply-timeout=2000 \
|
||||
+ /org/gnome/ScreenSaver \
|
||||
+ org.gnome.ScreenSaver.GetActive \
|
||||
+ | grep boolean | cut -d ' ' -f 5`
|
||||
+ result=$?
|
||||
+ if [ x"$status" = "xtrue" -o x"$status" = "xfalse" ]; then
|
||||
echo "enabled"
|
||||
+ elif [ x"$result" != "x0" ]; then
|
||||
+ echo "ERROR: dbus org.gnome.ScreenSaver.GetActive returned '$status'" >&2
|
||||
+ return 1
|
||||
else
|
||||
- # Something is wrong
|
||||
echo "disabled"
|
||||
fi
|
||||
;;
|
66
xdg-screensaver-gnome-perl.diff
Normal file
66
xdg-screensaver-gnome-perl.diff
Normal file
@ -0,0 +1,66 @@
|
||||
Source of the patch: http://patch-tracker.debian.org/patch/series/view/xdg-utils/1.1.0~rc1+git20111210-6/xdg-screensaver-new-gnome.diff
|
||||
--- scripts/xdg-screensaver 2012-05-21 12:58:36.269876261 +0200
|
||||
+++ scripts/xdg-screensaver 2012-05-21 13:01:12.328342683 +0200
|
||||
@@ -617,14 +617,54 @@
|
||||
# http://people.gnome.org/~mccann/gnome-screensaver/docs/gnome-screensaver.html
|
||||
case "$1" in
|
||||
suspend)
|
||||
- screensaver_suspend_loop \
|
||||
- dbus-send --session \
|
||||
- --dest=org.gnome.ScreenSaver \
|
||||
- --type=method_call \
|
||||
- /org/gnome/ScreenSaver \
|
||||
- org.gnome.ScreenSaver.SimulateUserActivity \
|
||||
- 2> /dev/null
|
||||
- result=$?
|
||||
+ perl -e '
|
||||
+use strict;
|
||||
+use warnings;
|
||||
+use IO::File;
|
||||
+use Net::DBus;
|
||||
+use X11::Protocol;
|
||||
+
|
||||
+my ($window_id, $screensaver_file) = @ARGV;
|
||||
+
|
||||
+# Find window name to pass to session manager.
|
||||
+my $x = X11::Protocol->new();
|
||||
+my $named_window_id = hex($window_id);
|
||||
+my $window_name;
|
||||
+while (1) {
|
||||
+ ($window_name) = $x->GetProperty($named_window_id, $x->atom("WM_NAME"),
|
||||
+ $x->atom("STRING"), 0, 1000, 0);
|
||||
+ last if defined($window_name) && $window_name ne "";
|
||||
+ (undef, $named_window_id) = $x->QueryTree($named_window_id);
|
||||
+ if (!defined($named_window_id)) {
|
||||
+ $window_name = "?";
|
||||
+ last;
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
+# Inhibit idle detection (flags = 8) with window name and ID.
|
||||
+# We have no reason so just send the window name again.
|
||||
+my $bus = Net::DBus->session();
|
||||
+my $sm_svc = $bus->get_service("org.gnome.SessionManager");
|
||||
+my $sm = $sm_svc->get_object("/org/gnome/SessionManager",
|
||||
+ "org.gnome.SessionManager");
|
||||
+$sm->Inhibit($window_name, hex($window_id), $window_name, 8);
|
||||
+
|
||||
+# Wait until removed from the status file.
|
||||
+while (1) {
|
||||
+ sleep(10);
|
||||
+ my $status = new IO::File($screensaver_file, "r")
|
||||
+ or exit 0;
|
||||
+ my $found;
|
||||
+ while (<$status>) {
|
||||
+ if (/^$window_id:/) {
|
||||
+ $found = 1;
|
||||
+ last;
|
||||
+ }
|
||||
+ }
|
||||
+ exit 0 unless $found;
|
||||
+}
|
||||
+' $window_id $screensaver_file &
|
||||
+ result=0
|
||||
;;
|
||||
|
||||
resume)
|
12
xdg-screensaver-sleep.diff
Normal file
12
xdg-screensaver-sleep.diff
Normal file
@ -0,0 +1,12 @@
|
||||
Source of the patch: http://cgit.freedesktop.org/xdg/xdg-utils/commit/?id=7465b22a95e9a28e3f4960e6ea40a4abeca1c2e9
|
||||
--- scripts/xdg-screensaver 2007-06-24 21:58:06.000000000 +0200
|
||||
+++ scripts/xdg-screensaver 2012-05-21 12:51:51.108252420 +0200
|
||||
@@ -608,7 +608,7 @@
|
||||
fi
|
||||
$MV "$tmpfile" "$screensaver_file"
|
||||
unlockfile
|
||||
- (while [ -f "$screensaver_file" ]; do $*; sleep 59; done) > /dev/null 2> /dev/null &
|
||||
+ (while [ -f "$screensaver_file" ]; do $*; sleep 50; done) > /dev/null 2> /dev/null &
|
||||
}
|
||||
|
||||
screensaver_gnome()
|
@ -1,3 +1,8 @@
|
||||
-------------------------------------------------------------------
|
||||
Mon May 21 10:16:02 UTC 2012 - vargusz@fazekas.hu
|
||||
|
||||
- Fix xdg-screensaver issues with Gnome 3 (bnc#559110)
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Sun Oct 23 23:12:02 UTC 2011 - pascal.bleser@opensuse.org
|
||||
|
||||
|
@ -41,6 +41,10 @@ Patch4: %name-1.0.2-lxde-support.patch
|
||||
# PATCH-FIX-UPSTREAM xdg-utils-1.0.2-bnc591714.patch fdo#27551 andrea@opensuse.org
|
||||
# this patch fix bnc#591714
|
||||
Patch5: %name-1.0.2-bnc591714.patch
|
||||
Patch6: xdg-screensaver-sleep.diff
|
||||
Patch7: xdg-screensaver-gnome-dbus.diff
|
||||
Patch8: xdg-screensaver-gnome-perl.diff
|
||||
Requires: perl, perl-Net-DBus, perl-X11-Protocol
|
||||
|
||||
%description
|
||||
The xdg-utils package is a set of simple scripts that provide basic
|
||||
@ -67,6 +71,9 @@ these utilities work properly in their environment.
|
||||
%patch3 -p1
|
||||
%patch4 -p1
|
||||
%patch5 -p1
|
||||
%patch6
|
||||
%patch7
|
||||
%patch8
|
||||
|
||||
%build
|
||||
%configure
|
||||
|
Loading…
Reference in New Issue
Block a user