SHA256
1
0
forked from pool/xdg-utils
Will Stephenson 2012-06-27 08:57:07 +00:00 committed by Git OBS Bridge
parent cca3c57137
commit bded640d58
5 changed files with 173 additions and 0 deletions

View 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
;;

View 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)

View 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()

View File

@ -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 Sun Oct 23 23:12:02 UTC 2011 - pascal.bleser@opensuse.org

View File

@ -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 # PATCH-FIX-UPSTREAM xdg-utils-1.0.2-bnc591714.patch fdo#27551 andrea@opensuse.org
# this patch fix bnc#591714 # this patch fix bnc#591714
Patch5: %name-1.0.2-bnc591714.patch 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 %description
The xdg-utils package is a set of simple scripts that provide basic 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 %patch3 -p1
%patch4 -p1 %patch4 -p1
%patch5 -p1 %patch5 -p1
%patch6
%patch7
%patch8
%build %build
%configure %configure