From c9551d250722081cbf7d6611f417bc597765e5c9 Mon Sep 17 00:00:00 2001 From: Fathi Boudra Date: Fri, 31 Dec 2010 14:41:14 +0200 Subject: xdg-screensaver: support X server blanking. Thanks to Ben Hutchings. --- ChangeLog | 1 + scripts/xdg-desktop-icon | 1 + scripts/xdg-desktop-menu | 1 + scripts/xdg-email | 1 + scripts/xdg-icon-resource | 1 + scripts/xdg-mime | 1 + scripts/xdg-open | 1 + scripts/xdg-screensaver | 48 +++++++++++++++++++++++++++++++++++++++++++++ scripts/xdg-screensaver.in | 47 ++++++++++++++++++++++++++++++++++++++++++++ scripts/xdg-settings | 1 + scripts/xdg-utils-common.in | 1 + 11 files changed, 104 insertions(+) diff --git a/ChangeLog b/ChangeLog index 6c8d34d..9001160 100644 --- a/ChangeLog +++ b/ChangeLog @@ -5,6 +5,7 @@ Thanks to Christopher Yeleighton. (BR31441) * xdg-open: declare file variable as local. (BR32487) * xdg-open: decode file:// urls. Thanks to Henning Garus. + * xdg-screensaver: support X server blanking. Thanks to Ben Hutchings. 2010-11-18 Rex Dieter * xdg-utils-common: fixup kfmclient_fix_exit_code() for newer kde-config diff --git a/scripts/xdg-desktop-icon b/scripts/xdg-desktop-icon index 2f9208f..5707e35 100755 --- a/scripts/xdg-desktop-icon +++ b/scripts/xdg-desktop-icon @@ -409,6 +409,7 @@ detectDE() elif `dbus-send --print-reply --dest=org.freedesktop.DBus /org/freedesktop/DBus org.freedesktop.DBus.GetNameOwner string:org.gnome.SessionManager > /dev/null 2>&1` ; then DE=gnome; elif xprop -root _DT_SAVE_MODE 2> /dev/null | grep ' = \"xfce4\"$' >/dev/null 2>&1; then DE=xfce; elif [ x"$DESKTOP_SESSION" == x"LXDE" ]; then DE=lxde; + else DE="" fi } diff --git a/scripts/xdg-desktop-menu b/scripts/xdg-desktop-menu index 2d0487a..8762c4f 100755 --- a/scripts/xdg-desktop-menu +++ b/scripts/xdg-desktop-menu @@ -605,6 +605,7 @@ detectDE() elif `dbus-send --print-reply --dest=org.freedesktop.DBus /org/freedesktop/DBus org.freedesktop.DBus.GetNameOwner string:org.gnome.SessionManager > /dev/null 2>&1` ; then DE=gnome; elif xprop -root _DT_SAVE_MODE 2> /dev/null | grep ' = \"xfce4\"$' >/dev/null 2>&1; then DE=xfce; elif [ x"$DESKTOP_SESSION" == x"LXDE" ]; then DE=lxde; + else DE="" fi } diff --git a/scripts/xdg-email b/scripts/xdg-email index 55dff2d..83090ab 100755 --- a/scripts/xdg-email +++ b/scripts/xdg-email @@ -361,6 +361,7 @@ detectDE() elif `dbus-send --print-reply --dest=org.freedesktop.DBus /org/freedesktop/DBus org.freedesktop.DBus.GetNameOwner string:org.gnome.SessionManager > /dev/null 2>&1` ; then DE=gnome; elif xprop -root _DT_SAVE_MODE 2> /dev/null | grep ' = \"xfce4\"$' >/dev/null 2>&1; then DE=xfce; elif [ x"$DESKTOP_SESSION" == x"LXDE" ]; then DE=lxde; + else DE="" fi } diff --git a/scripts/xdg-icon-resource b/scripts/xdg-icon-resource index 5580e29..211d947 100755 --- a/scripts/xdg-icon-resource +++ b/scripts/xdg-icon-resource @@ -401,6 +401,7 @@ detectDE() elif `dbus-send --print-reply --dest=org.freedesktop.DBus /org/freedesktop/DBus org.freedesktop.DBus.GetNameOwner string:org.gnome.SessionManager > /dev/null 2>&1` ; then DE=gnome; elif xprop -root _DT_SAVE_MODE 2> /dev/null | grep ' = \"xfce4\"$' >/dev/null 2>&1; then DE=xfce; elif [ x"$DESKTOP_SESSION" == x"LXDE" ]; then DE=lxde; + else DE="" fi } diff --git a/scripts/xdg-mime b/scripts/xdg-mime index 915cf0d..ce6c18e 100755 --- a/scripts/xdg-mime +++ b/scripts/xdg-mime @@ -431,6 +431,7 @@ detectDE() elif `dbus-send --print-reply --dest=org.freedesktop.DBus /org/freedesktop/DBus org.freedesktop.DBus.GetNameOwner string:org.gnome.SessionManager > /dev/null 2>&1` ; then DE=gnome; elif xprop -root _DT_SAVE_MODE 2> /dev/null | grep ' = \"xfce4\"$' >/dev/null 2>&1; then DE=xfce; elif [ x"$DESKTOP_SESSION" == x"LXDE" ]; then DE=lxde; + else DE="" fi } diff --git a/scripts/xdg-open b/scripts/xdg-open index ac336e3..b8db0aa 100755 --- a/scripts/xdg-open +++ b/scripts/xdg-open @@ -308,6 +308,7 @@ detectDE() elif `dbus-send --print-reply --dest=org.freedesktop.DBus /org/freedesktop/DBus org.freedesktop.DBus.GetNameOwner string:org.gnome.SessionManager > /dev/null 2>&1` ; then DE=gnome; elif xprop -root _DT_SAVE_MODE 2> /dev/null | grep ' = \"xfce4\"$' >/dev/null 2>&1; then DE=xfce; elif [ x"$DESKTOP_SESSION" == x"LXDE" ]; then DE=lxde; + else DE="" fi } diff --git a/scripts/xdg-screensaver b/scripts/xdg-screensaver index 4b2e709..d377f35 100755 --- a/scripts/xdg-screensaver +++ b/scripts/xdg-screensaver @@ -336,6 +336,7 @@ detectDE() elif `dbus-send --print-reply --dest=org.freedesktop.DBus /org/freedesktop/DBus org.freedesktop.DBus.GetNameOwner string:org.gnome.SessionManager > /dev/null 2>&1` ; then DE=gnome; elif xprop -root _DT_SAVE_MODE 2> /dev/null | grep ' = \"xfce4\"$' >/dev/null 2>&1; then DE=xfce; elif [ x"$DESKTOP_SESSION" == x"LXDE" ]; then DE=lxde; + else DE="" fi } @@ -430,6 +431,10 @@ perform_action() xscreensaver) screensaver_xscreensaver "$1" ;; + + '') + screensaver_xserver "$1" + ;; esac if [ "$1" = "suspend" ] ; then @@ -685,6 +690,49 @@ screensaver_kde() esac } +screensaver_xserver() +{ + case "$1" in + suspend) + xset s off > /dev/null + result=$? + ;; + + resume) + xset s default > /dev/null + result=$? + ;; + + activate) + xset s activate > /dev/null + result=$? + ;; + + reset) + xset s reset > /dev/null + result=$? + ;; + + status) + timeout=`xset q | sed '/^Screen Saver:/,/^[^ ]/ { s/.*timeout: *\([0-9]*\).*/\1/; t }; d'` + result=$? + if [ "$timeout" -gt 0 ]; then + echo "enabled" + elif [ "$timeout" -eq 0 ]; then + echo "disabled" + else + echo "ERROR: xset q did not report the screensaver timeout" >&2 + return 1 + fi + ;; + + *) + echo "ERROR: Unknown command '$1'" >&2 + return 1 + ;; + esac +} + screensaver_suspend_loop() { lockfile diff --git a/scripts/xdg-screensaver.in b/scripts/xdg-screensaver.in index 5e5736c..8839187 100644 --- a/scripts/xdg-screensaver.in +++ b/scripts/xdg-screensaver.in @@ -100,6 +100,10 @@ perform_action() xscreensaver) screensaver_xscreensaver "$1" ;; + + '') + screensaver_xserver "$1" + ;; esac if [ "$1" = "suspend" ] ; then @@ -355,6 +359,49 @@ screensaver_kde() esac } +screensaver_xserver() +{ + case "$1" in + suspend) + xset s off > /dev/null + result=$? + ;; + + resume) + xset s default > /dev/null + result=$? + ;; + + activate) + xset s activate > /dev/null + result=$? + ;; + + reset) + xset s reset > /dev/null + result=$? + ;; + + status) + timeout=`xset q | sed '/^Screen Saver:/,/^[^ ]/ { s/.*timeout: *\([0-9]*\).*/\1/; t }; d'` + result=$? + if [ "$timeout" -gt 0 ]; then + echo "enabled" + elif [ "$timeout" -eq 0 ]; then + echo "disabled" + else + echo "ERROR: xset q did not report the screensaver timeout" >&2 + return 1 + fi + ;; + + *) + echo "ERROR: Unknown command '$1'" >&2 + return 1 + ;; + esac +} + screensaver_suspend_loop() { lockfile diff --git a/scripts/xdg-settings b/scripts/xdg-settings index 9d7d489..a8c5ba3 100755 --- a/scripts/xdg-settings +++ b/scripts/xdg-settings @@ -316,6 +316,7 @@ detectDE() elif `dbus-send --print-reply --dest=org.freedesktop.DBus /org/freedesktop/DBus org.freedesktop.DBus.GetNameOwner string:org.gnome.SessionManager > /dev/null 2>&1` ; then DE=gnome; elif xprop -root _DT_SAVE_MODE 2> /dev/null | grep ' = \"xfce4\"$' >/dev/null 2>&1; then DE=xfce; elif [ x"$DESKTOP_SESSION" == x"LXDE" ]; then DE=lxde; + else DE="" fi } diff --git a/scripts/xdg-utils-common.in b/scripts/xdg-utils-common.in index 60d70c3..dd33f82 100644 --- a/scripts/xdg-utils-common.in +++ b/scripts/xdg-utils-common.in @@ -198,6 +198,7 @@ detectDE() elif `dbus-send --print-reply --dest=org.freedesktop.DBus /org/freedesktop/DBus org.freedesktop.DBus.GetNameOwner string:org.gnome.SessionManager > /dev/null 2>&1` ; then DE=gnome; elif xprop -root _DT_SAVE_MODE 2> /dev/null | grep ' = \"xfce4\"$' >/dev/null 2>&1; then DE=xfce; elif [ x"$DESKTOP_SESSION" == x"LXDE" ]; then DE=lxde; + else DE="" fi } -- cgit v1.2.3