| Index: third_party/xdg-utils/scripts/xdg-screensaver.in
|
| ===================================================================
|
| --- third_party/xdg-utils/scripts/xdg-screensaver.in (revision 57942)
|
| +++ third_party/xdg-utils/scripts/xdg-screensaver.in (working copy)
|
| @@ -26,7 +26,7 @@
|
|
|
| #@xdg-utils-common@
|
|
|
| -# Check if we can use "mv -T"
|
| +# Check if we can use "mv -T"
|
| if mv -T ... ... 2>&1 | grep '\.\.\.' > /dev/null ; then
|
| # We can securely move files in /tmp with mv -T
|
| DEBUG 1 "mv -T available"
|
| @@ -53,7 +53,7 @@
|
| do
|
| sleep 1
|
| try=$(($try+1))
|
| - if [ $try -eq 3 ] ; then
|
| + if [ $try -eq 3 ] ; then
|
| rm -f "$screensaver_file".lock || return # Can't remove lockfile
|
| try=0
|
| fi
|
| @@ -86,11 +86,15 @@
|
|
|
| case "$DE" in
|
| kde)
|
| - screensaver_kde "$1"
|
| + if [ x"$KDE_SESSION_VERSION" = x"4" ]; then
|
| + screensaver_freedesktop "$1"
|
| + else
|
| + screensaver_kde "$1"
|
| + fi
|
| ;;
|
|
|
| - gnome)
|
| - screensaver_gnome "$1"
|
| + gnome_screensaver)
|
| + screensaver_gnome_screensaver "$1"
|
| ;;
|
|
|
| xscreensaver)
|
| @@ -132,13 +136,13 @@
|
| {
|
| lockfile # Obtain lockfile
|
| # Find the PID of the trackingprocess
|
| - xprop_pid=`grep "$window_id:" "$screensaver_file" 2> /dev/null | cut -d ':' -f 2`
|
| + xprop_pid=`grep "$window_id:" "$screensaver_file" 2> /dev/null | cut -d ':' -f 2`
|
| unlockfile # Free lockfile
|
| if [ -n "$xprop_pid" ] && ps -p "$xprop_pid" 2> /dev/null | grep xprop > /dev/null; then
|
| - # Kill the tracking process
|
| + # Kill the tracking process
|
| kill -s TERM $xprop_pid
|
| fi
|
| - cleanup_suspend
|
| + cleanup_suspend
|
| }
|
|
|
| XPROP=`which xprop 2> /dev/null`
|
| @@ -148,7 +152,7 @@
|
| if [ -z "$XPROP" ]; then
|
| DEBUG 3 "xprop not found"
|
| return
|
| - fi
|
| + fi
|
| DEBUG 2 "Running $XPROP -id $window_id"
|
| if $XPROP -id $window_id > /dev/null 2> /dev/null; then
|
| DEBUG 3 Window $window_id exists
|
| @@ -179,7 +183,7 @@
|
| echo "$wid:$pid"
|
| if [ $wid = $window_id ] ; then
|
| already_tracked=0
|
| - fi
|
| + fi
|
| fi
|
| done
|
| IFS="$IFS_save"
|
| @@ -211,33 +215,79 @@
|
| {
|
| case "$1" in
|
| suspend)
|
| - #FIXME (get/store cookie)
|
| - qdbus org.freedesktop.ScreenSaver /ScreenSaver org.freedesktop.ScreenSaver.Inhibit $window_id xdg-screensaver > /dev/null
|
| + dbus-send --session \
|
| + --dest=org.freedesktop.ScreenSaver \
|
| + --type=method_call \
|
| + --print-reply \
|
| + --reply-timeout=2000 \
|
| + /ScreenSaver \
|
| + org.freedesktop.ScreenSaver.Inhibit \
|
| + string:$window_id \
|
| + string:xdg-screensaver \
|
| + | grep uint32 | cut -d ' ' -f 5 >| "$screensaver_file.cookie" \
|
| + 2> /dev/null
|
| result=$?
|
| ;;
|
|
|
| resume)
|
| - qdbus org.freedesktop.ScreenSaver /ScreenSaver org.freedesktop.ScreenSaver.SetActive true > /dev/null
|
| + if [ -f "$screensaver_file.cookie" ] ; then
|
| + value=`cat "$screensaver_file.cookie"`
|
| + dbus-send --session \
|
| + --dest=org.freedesktop.ScreenSaver \
|
| + --type=method_call \
|
| + /ScreenSaver \
|
| + org.freedesktop.ScreenSaver.UnInhibit \
|
| + uint32:$value \
|
| + 2> /dev/null
|
| + rm -f "$screensaver_file.cookie"
|
| + fi
|
| result=$?
|
| ;;
|
|
|
| activate)
|
| - qdbus org.freedesktop.ScreenSaver /ScreenSaver org.freedesktop.ScreenSaver.SetActive true > /dev/null
|
| + dbus-send --session \
|
| + --dest=org.freedesktop.ScreenSaver \
|
| + --type=method_call \
|
| + /ScreenSaver \
|
| + org.freedesktop.ScreenSaver.SetActive \
|
| + boolean:true \
|
| + 2> /dev/null
|
| result=$?
|
| ;;
|
|
|
| lock)
|
| - qdbus org.freedesktop.ScreenSaver /ScreenSaver org.freedesktop.ScreenSaver.Lock > /dev/null
|
| + dbus-send --session \
|
| + --dest=org.freedesktop.ScreenSaver \
|
| + --type=method_call \
|
| + /ScreenSaver \
|
| + org.freedesktop.ScreenSaver.Lock \
|
| + 2> /dev/null
|
| ;;
|
|
|
| reset)
|
| - #FIXME (cookies?)
|
| - qdbus org.freedesktop.ScreenSaver /ScreenSaver org.freedesktop.ScreenSaver.UnInhibit $window_id > /dev/null
|
| + if [ -f "$screensaver_file.cookie" ] ; then
|
| + value=`cat "$screensaver_file.cookie"`
|
| + dbus-send --session \
|
| + --dest=org.freedesktop.ScreenSaver \
|
| + --type=method_call \
|
| + /ScreenSaver \
|
| + org.freedesktop.ScreenSaver.UnInhibit \
|
| + uint32:$value \
|
| + 2> /dev/null
|
| + rm -f "$screensaver_file.cookie"
|
| + fi
|
| result=$?
|
| ;;
|
|
|
| status)
|
| - status=`qdbus org.freedesktop.ScreenSaver /ScreenSaver org.freedesktop.ScreenSaver.GetActive`
|
| + status=`dbus-send --session \
|
| + --dest=org.freedesktop.ScreenSaver \
|
| + --type=method_call \
|
| + --print-reply \
|
| + --reply-timeout=2000 \
|
| + /ScreenSaver \
|
| + org.freedesktop.ScreenSaver.GetActive \
|
| + | grep boolean | cut -d ' ' -f 5`
|
| result=$?
|
| if [ x"$status" = "xtrue" ]; then
|
| echo "enabled"
|
| @@ -259,7 +309,7 @@
|
| screensaver_kde()
|
| {
|
| case "$1" in
|
| - suspend)
|
| + suspend)
|
| dcop kdesktop KScreensaverIface enable false > /dev/null
|
| result=$?
|
| ;;
|
| @@ -268,7 +318,7 @@
|
| dcop kdesktop KScreensaverIface configure > /dev/null
|
| result=$?
|
| ;;
|
| -
|
| +
|
| activate)
|
| dcop kdesktop KScreensaverIface save > /dev/null
|
| result=$?
|
| @@ -278,7 +328,7 @@
|
| dcop kdesktop KScreensaverIface lock > /dev/null
|
| result=$?
|
| ;;
|
| -
|
| +
|
| reset)
|
| # Turns the screensaver off right now
|
| dcop kdesktop KScreensaverIface quit > /dev/null
|
| @@ -325,14 +375,14 @@
|
| # Suspend pending, don't do a thing
|
| $MV "$tmpfile" "$screensaver_file"
|
| unlockfile
|
| - return
|
| + return
|
| fi
|
| $MV "$tmpfile" "$screensaver_file"
|
| unlockfile
|
| (while [ -f "$screensaver_file" ]; do $*; sleep 50; done) > /dev/null 2> /dev/null &
|
| }
|
|
|
| -screensaver_gnome()
|
| +screensaver_gnome_screensaver()
|
| {
|
| # TODO
|
| # There seems to be a DBUS interface for gnome-screensaver
|
| @@ -341,7 +391,7 @@
|
| # 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
|
| case "$1" in
|
| - suspend)
|
| + suspend)
|
| screensaver_suspend_loop gnome-screensaver-command --poke
|
| result=0
|
| ;;
|
| @@ -350,17 +400,17 @@
|
| # Automatic resume when $screensaver_file disappears
|
| result=0
|
| ;;
|
| -
|
| +
|
| activate)
|
| gnome-screensaver-command --activate > /dev/null 2> /dev/null
|
| result=$?
|
| ;;
|
| -
|
| +
|
| lock)
|
| gnome-screensaver-command --lock > /dev/null 2> /dev/null
|
| result=$?
|
| ;;
|
| -
|
| +
|
| reset)
|
| # Turns the screensaver off right now
|
| gnome-screensaver-command --deactivate > /dev/null 2> /dev/null
|
| @@ -389,7 +439,7 @@
|
| screensaver_xscreensaver()
|
| {
|
| case "$1" in
|
| - suspend)
|
| + suspend)
|
| screensaver_suspend_loop xscreensaver-command -deactivate
|
| result=0
|
| ;;
|
| @@ -398,7 +448,7 @@
|
| # Automatic resume when $screensaver_file disappears
|
| result=0
|
| ;;
|
| -
|
| +
|
| activate)
|
| xscreensaver-command -activate > /dev/null 2> /dev/null
|
| result=$?
|
| @@ -408,7 +458,7 @@
|
| xscreensaver-command -lock > /dev/null 2> /dev/null
|
| result=$?
|
| ;;
|
| -
|
| +
|
| reset)
|
| # Turns the screensaver off right now
|
| xscreensaver-command -deactivate > /dev/null 2> /dev/null
|
| @@ -439,26 +489,26 @@
|
| case $1 in
|
| suspend)
|
| action="$1"
|
| -
|
| +
|
| shift
|
|
|
| - if [ -z "$1" ] ; then
|
| + if [ -z "$1" ] ; then
|
| exit_failure_syntax "WindowID argument missing"
|
| fi
|
| -
|
| +
|
| window_id="$1"
|
| check_window_id
|
| ;;
|
|
|
| resume)
|
| action="$1"
|
| -
|
| +
|
| shift
|
|
|
| - if [ -z "$1" ] ; then
|
| + if [ -z "$1" ] ; then
|
| exit_failure_syntax "WindowID argument missing"
|
| fi
|
| -
|
| +
|
| window_id="$1"
|
| check_window_id
|
| ;;
|
| @@ -478,7 +528,7 @@
|
| status)
|
| action="$1"
|
| ;;
|
| -
|
| +
|
| *)
|
| exit_failure_syntax "unknown command '$1'"
|
| ;;
|
| @@ -487,6 +537,8 @@
|
| detectDE
|
| # Consider "xscreensaver" a separate DE
|
| xscreensaver-command -version 2> /dev/null | grep XScreenSaver > /dev/null && DE="xscreensaver"
|
| +# Consider "gnome-screensaver" a separate DE
|
| +gnome-screensaver-command -q > /dev/null 2>&1 && DE="gnome_screensaver"
|
|
|
| if [ "$action" = "resume" ] ; then
|
| do_resume
|
| @@ -498,7 +550,7 @@
|
| if [ "$action" = "suspend" ] ; then
|
| # Start tracking $window_id and resume the screensaver once it disappears
|
| ( track_window ) 2> /dev/null > /dev/null &
|
| -fi
|
| +fi
|
|
|
| if [ $result -eq 0 ]; then
|
| exit_success
|
|
|