| OLD | NEW |
| 1 #!/bin/sh | 1 #!/bin/sh |
| 2 #--------------------------------------------- | 2 #--------------------------------------------- |
| 3 # xdg-screensaver | 3 # xdg-screensaver |
| 4 # | 4 # |
| 5 # Utility script to control screensaver. | 5 # Utility script to control screensaver. |
| 6 # | 6 # |
| 7 # Refer to the usage() function below for usage. | 7 # Refer to the usage() function below for usage. |
| 8 # | 8 # |
| 9 # Copyright 2006, Bryce Harrington <bryce@osdl.org> | 9 # Copyright 2006, Bryce Harrington <bryce@osdl.org> |
| 10 # | 10 # |
| (...skipping 289 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 300 echo "Use 'man xdg-screensaver' or 'xdg-screensaver --manual' for ad
ditional info." | 300 echo "Use 'man xdg-screensaver' or 'xdg-screensaver --manual' for ad
ditional info." |
| 301 exit_success | 301 exit_success |
| 302 ;; | 302 ;; |
| 303 | 303 |
| 304 --manual) | 304 --manual) |
| 305 manualpage | 305 manualpage |
| 306 exit_success | 306 exit_success |
| 307 ;; | 307 ;; |
| 308 | 308 |
| 309 --version) | 309 --version) |
| 310 echo "xdg-screensaver 1.0.2" | 310 echo "xdg-screensaver 1.1.0 rc1" |
| 311 exit_success | 311 exit_success |
| 312 ;; | 312 ;; |
| 313 esac | 313 esac |
| 314 done | 314 done |
| 315 } | 315 } |
| 316 | 316 |
| 317 check_common_commands "$@" | 317 check_common_commands "$@" |
| 318 | 318 |
| 319 [ -z "${XDG_UTILS_DEBUG_LEVEL}" ] && unset XDG_UTILS_DEBUG_LEVEL; | 319 [ -z "${XDG_UTILS_DEBUG_LEVEL}" ] && unset XDG_UTILS_DEBUG_LEVEL; |
| 320 if [ ${XDG_UTILS_DEBUG_LEVEL-0} -lt 1 ]; then | 320 if [ ${XDG_UTILS_DEBUG_LEVEL-0} -lt 1 ]; then |
| 321 # Be silent | 321 # Be silent |
| 322 xdg_redirect_output=" > /dev/null 2> /dev/null" | 322 xdg_redirect_output=" > /dev/null 2> /dev/null" |
| 323 else | 323 else |
| 324 # All output to stderr | 324 # All output to stderr |
| 325 xdg_redirect_output=" >&2" | 325 xdg_redirect_output=" >&2" |
| 326 fi | 326 fi |
| 327 | 327 |
| 328 #-------------------------------------- | 328 #-------------------------------------- |
| 329 # Checks for known desktop environments | 329 # Checks for known desktop environments |
| 330 # set variable DE to the desktop environments name, lowercase | 330 # set variable DE to the desktop environments name, lowercase |
| 331 | 331 |
| 332 detectDE() | 332 detectDE() |
| 333 { | 333 { |
| 334 if [ x"$KDE_FULL_SESSION" = x"true" ]; then DE=kde; | 334 if [ x"$KDE_FULL_SESSION" = x"true" ]; then DE=kde; |
| 335 elif [ x"$GNOME_DESKTOP_SESSION_ID" != x"" ]; then DE=gnome; | 335 elif [ x"$GNOME_DESKTOP_SESSION_ID" != x"" ]; then DE=gnome; |
| 336 elif `dbus-send --print-reply --dest=org.freedesktop.DBus /org/freedesktop/D
Bus org.freedesktop.DBus.GetNameOwner string:org.gnome.SessionManager > /dev/nul
l 2>&1` ; then DE=gnome; | 336 elif `dbus-send --print-reply --dest=org.freedesktop.DBus /org/freedesktop/D
Bus org.freedesktop.DBus.GetNameOwner string:org.gnome.SessionManager > /dev/nul
l 2>&1` ; then DE=gnome; |
| 337 elif xprop -root _DT_SAVE_MODE 2> /dev/null | grep ' = \"xfce4\"$' >/dev/nul
l 2>&1; then DE=xfce; | 337 elif xprop -root _DT_SAVE_MODE 2> /dev/null | grep ' = \"xfce4\"$' >/dev/nul
l 2>&1; then DE=xfce; |
| 338 elif [ x"$DESKTOP_SESSION" == x"LXDE" ]; then DE=lxde; |
| 339 else DE="" |
| 338 fi | 340 fi |
| 339 } | 341 } |
| 340 | 342 |
| 341 #---------------------------------------------------------------------------- | 343 #---------------------------------------------------------------------------- |
| 342 # kfmclient exec/openURL can give bogus exit value in KDE <= 3.5.4 | 344 # kfmclient exec/openURL can give bogus exit value in KDE <= 3.5.4 |
| 343 # It also always returns 1 in KDE 3.4 and earlier | 345 # It also always returns 1 in KDE 3.4 and earlier |
| 344 # Simply return 0 in such case | 346 # Simply return 0 in such case |
| 345 | 347 |
| 346 kfmclient_fix_exit_code() | 348 kfmclient_fix_exit_code() |
| 347 { | 349 { |
| 348 version=`kde${KDE_SESSION_VERSION}-config --version 2>/dev/null | grep KDE` | 350 [ x"$KDE_SESSION_VERSION" = x"4" ] && return 0; |
| 349 major=`echo $version | sed 's/KDE: \([0-9]\).*/\1/'` | 351 version=`LC_ALL=C.UTF-8 kde-config --version 2>/dev/null | grep '^KDE'` |
| 350 minor=`echo $version | sed 's/KDE: [0-9]*\.\([0-9]\).*/\1/'` | 352 major=`echo $version | sed 's/KDE.*: \([0-9]\).*/\1/'` |
| 351 release=`echo $version | sed 's/KDE: [0-9]*\.[0-9]*\.\([0-9]\).*/\1/'` | 353 minor=`echo $version | sed 's/KDE.*: [0-9]*\.\([0-9]\).*/\1/'` |
| 354 release=`echo $version | sed 's/KDE.*: [0-9]*\.[0-9]*\.\([0-9]\).*/\1/'` |
| 352 test "$major" -gt 3 && return $1 | 355 test "$major" -gt 3 && return $1 |
| 353 test "$minor" -gt 5 && return $1 | 356 test "$minor" -gt 5 && return $1 |
| 354 test "$release" -gt 4 && return $1 | 357 test "$release" -gt 4 && return $1 |
| 355 return 0 | 358 return 0 |
| 356 } | 359 } |
| 357 | 360 |
| 358 # Check if we can use "mv -T" | 361 # Check if we can use "mv -T" |
| 359 if mv -T ... ... 2>&1 | grep '\.\.\.' > /dev/null ; then | 362 if mv -T ... ... 2>&1 | grep '\.\.\.' > /dev/null ; then |
| 360 # We can securely move files in /tmp with mv -T | 363 # We can securely move files in /tmp with mv -T |
| 361 DEBUG 1 "mv -T available" | 364 DEBUG 1 "mv -T available" |
| (...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 422 fi | 425 fi |
| 423 ;; | 426 ;; |
| 424 | 427 |
| 425 gnome_screensaver) | 428 gnome_screensaver) |
| 426 screensaver_gnome_screensaver "$1" | 429 screensaver_gnome_screensaver "$1" |
| 427 ;; | 430 ;; |
| 428 | 431 |
| 429 xscreensaver) | 432 xscreensaver) |
| 430 screensaver_xscreensaver "$1" | 433 screensaver_xscreensaver "$1" |
| 431 ;; | 434 ;; |
| 435 |
| 436 '') |
| 437 screensaver_xserver "$1" |
| 438 ;; |
| 432 esac | 439 esac |
| 433 | 440 |
| 434 if [ "$1" = "suspend" ] ; then | 441 if [ "$1" = "suspend" ] ; then |
| 435 # Save DPMS state | 442 # Save DPMS state |
| 436 if xset -q | grep 'DPMS is Enabled' > /dev/null 2> /dev/null; then | 443 if xset -q | grep 'DPMS is Enabled' > /dev/null 2> /dev/null; then |
| 437 test "${TMPDIR+set}" = set || TMPDIR=/tmp | 444 test "${TMPDIR+set}" = set || TMPDIR=/tmp |
| 438 tmpfile=`mktemp $TMPDIR/tmp.XXXXXXXXXX` | 445 tmpfile=`mktemp $TMPDIR/tmp.XXXXXXXXXX` |
| 439 $MV "$tmpfile" "$screensaver_file.dpms" | 446 $MV "$tmpfile" "$screensaver_file.dpms" |
| 440 # Disable DPMS | 447 # Disable DPMS |
| 441 xset -dpms | 448 xset -dpms |
| (...skipping 180 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 622 echo "enabled" | 629 echo "enabled" |
| 623 elif [ x"$status" = "xfalse" ]; then | 630 elif [ x"$status" = "xfalse" ]; then |
| 624 echo "disabled" | 631 echo "disabled" |
| 625 else | 632 else |
| 626 echo "ERROR: dbus org.freedesktop.ScreenSaver.GetActive returned '$s
tatus'" >&2 | 633 echo "ERROR: dbus org.freedesktop.ScreenSaver.GetActive returned '$s
tatus'" >&2 |
| 627 return 1 | 634 return 1 |
| 628 fi | 635 fi |
| 629 ;; | 636 ;; |
| 630 | 637 |
| 631 *) | 638 *) |
| 632 echo "ERROR: Unknown command '$1'" >&2 | 639 echo "ERROR: Unknown command '$1'" >&2 |
| 633 return 1 | 640 return 1 |
| 634 ;; | 641 ;; |
| 635 esac | 642 esac |
| 636 } | 643 } |
| 637 | 644 |
| 638 screensaver_kde() | 645 screensaver_kde() |
| 639 { | 646 { |
| 640 case "$1" in | 647 case "$1" in |
| 641 suspend) | 648 suspend) |
| 642 dcop kdesktop KScreensaverIface enable false > /dev/null | 649 dcop kdesktop KScreensaverIface enable false > /dev/null |
| (...skipping 22 matching lines...) Expand all Loading... |
| 665 ;; | 672 ;; |
| 666 | 673 |
| 667 status) | 674 status) |
| 668 status=`dcop kdesktop KScreensaverIface isEnabled` | 675 status=`dcop kdesktop KScreensaverIface isEnabled` |
| 669 result=$? | 676 result=$? |
| 670 if [ x"$status" = "xtrue" ]; then | 677 if [ x"$status" = "xtrue" ]; then |
| 671 echo "enabled" | 678 echo "enabled" |
| 672 elif [ x"$status" = "xfalse" ]; then | 679 elif [ x"$status" = "xfalse" ]; then |
| 673 echo "disabled" | 680 echo "disabled" |
| 674 else | 681 else |
| 675 echo "ERROR: kdesktop KScreensaverIface isEnabled returned '$status
'" >&2 | 682 echo "ERROR: kdesktop KScreensaverIface isEnabled returned '$status'
" >&2 |
| 676 return 1 | 683 return 1 |
| 677 fi | 684 fi |
| 678 ;; | 685 ;; |
| 679 | 686 |
| 680 *) | 687 *) |
| 681 echo "ERROR: Unknown command '$1'" >&2 | 688 echo "ERROR: Unknown command '$1'" >&2 |
| 689 return 1 |
| 690 ;; |
| 691 esac |
| 692 } |
| 693 |
| 694 screensaver_xserver() |
| 695 { |
| 696 case "$1" in |
| 697 suspend) |
| 698 xset s off > /dev/null |
| 699 result=$? |
| 700 ;; |
| 701 |
| 702 resume) |
| 703 xset s default > /dev/null |
| 704 result=$? |
| 705 ;; |
| 706 |
| 707 activate) |
| 708 xset s activate > /dev/null |
| 709 result=$? |
| 710 ;; |
| 711 |
| 712 reset) |
| 713 xset s reset > /dev/null |
| 714 result=$? |
| 715 ;; |
| 716 |
| 717 status) |
| 718 timeout=`xset q | sed '/^Screen Saver:/,/^[^ ]/ { s/.*timeout: *\([0-9]*
\).*/\1/; t }; d'` |
| 719 result=$? |
| 720 if [ "$timeout" -gt 0 ]; then |
| 721 echo "enabled" |
| 722 elif [ "$timeout" -eq 0 ]; then |
| 723 echo "disabled" |
| 724 else |
| 725 echo "ERROR: xset q did not report the screensaver timeout" >&2 |
| 726 return 1 |
| 727 fi |
| 728 ;; |
| 729 |
| 730 *) |
| 731 echo "ERROR: Unknown command '$1'" >&2 |
| 682 return 1 | 732 return 1 |
| 683 ;; | 733 ;; |
| 684 esac | 734 esac |
| 685 } | 735 } |
| 686 | 736 |
| 687 screensaver_suspend_loop() | 737 screensaver_suspend_loop() |
| 688 { | 738 { |
| 689 lockfile | 739 lockfile |
| 690 test "${TMPDIR+set}" = set || TMPDIR=/tmp | 740 test "${TMPDIR+set}" = set || TMPDIR=/tmp |
| 691 tmpfile=`mktemp $TMPDIR/tmp.XXXXXXXXXX` | 741 tmpfile=`mktemp $TMPDIR/tmp.XXXXXXXXXX` |
| (...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 752 echo "disabled" | 802 echo "disabled" |
| 753 elif gnome-screensaver-command --query > /dev/null 2> /dev/null; then | 803 elif gnome-screensaver-command --query > /dev/null 2> /dev/null; then |
| 754 echo "enabled" | 804 echo "enabled" |
| 755 else | 805 else |
| 756 # Something is wrong | 806 # Something is wrong |
| 757 echo "disabled" | 807 echo "disabled" |
| 758 fi | 808 fi |
| 759 ;; | 809 ;; |
| 760 | 810 |
| 761 *) | 811 *) |
| 762 echo "ERROR: Unknown command '$1" >&2 | 812 echo "ERROR: Unknown command '$1" >&2 |
| 763 return 1 | 813 return 1 |
| 764 ;; | 814 ;; |
| 765 esac | 815 esac |
| 766 } | 816 } |
| 767 | 817 |
| 768 screensaver_xscreensaver() | 818 screensaver_xscreensaver() |
| 769 { | 819 { |
| 770 case "$1" in | 820 case "$1" in |
| 771 suspend) | 821 suspend) |
| 772 screensaver_suspend_loop xscreensaver-command -deactivate | 822 screensaver_suspend_loop xscreensaver-command -deactivate |
| (...skipping 24 matching lines...) Expand all Loading... |
| 797 status) | 847 status) |
| 798 result=0 | 848 result=0 |
| 799 if [ -f "$screensaver_file" ] ; then | 849 if [ -f "$screensaver_file" ] ; then |
| 800 echo "disabled" | 850 echo "disabled" |
| 801 else | 851 else |
| 802 echo "enabled" | 852 echo "enabled" |
| 803 fi | 853 fi |
| 804 ;; | 854 ;; |
| 805 | 855 |
| 806 *) | 856 *) |
| 807 echo "ERROR: Unknown command '$1" >&2 | 857 echo "ERROR: Unknown command '$1" >&2 |
| 808 return 1 | 858 return 1 |
| 809 ;; | 859 ;; |
| 810 esac | 860 esac |
| 811 } | 861 } |
| 812 | 862 |
| 813 [ x"$1" != x"" ] || exit_failure_syntax | 863 [ x"$1" != x"" ] || exit_failure_syntax |
| 814 | 864 |
| 815 action= | 865 action= |
| 816 window_id= | 866 window_id= |
| 817 | 867 |
| (...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 859 ;; | 909 ;; |
| 860 | 910 |
| 861 *) | 911 *) |
| 862 exit_failure_syntax "unknown command '$1'" | 912 exit_failure_syntax "unknown command '$1'" |
| 863 ;; | 913 ;; |
| 864 esac | 914 esac |
| 865 | 915 |
| 866 detectDE | 916 detectDE |
| 867 # Consider "xscreensaver" a separate DE | 917 # Consider "xscreensaver" a separate DE |
| 868 xscreensaver-command -version 2> /dev/null | grep XScreenSaver > /dev/null && DE
="xscreensaver" | 918 xscreensaver-command -version 2> /dev/null | grep XScreenSaver > /dev/null && DE
="xscreensaver" |
| 869 # Consider "gnome-screensaver" a separate DE | 919 # Consider "gnome-screensaver" a separate DE |
| 870 gnome-screensaver-command -q > /dev/null 2>&1 && DE="gnome_screensaver" | 920 gnome-screensaver-command -q > /dev/null 2>&1 && DE="gnome_screensaver" |
| 871 | 921 |
| 872 if [ "$action" = "resume" ] ; then | 922 if [ "$action" = "resume" ] ; then |
| 873 do_resume | 923 do_resume |
| 874 exit_success | 924 exit_success |
| 875 fi | 925 fi |
| 876 | 926 |
| 877 perform_action "$action" | 927 perform_action "$action" |
| 878 | 928 |
| 879 if [ "$action" = "suspend" ] ; then | 929 if [ "$action" = "suspend" ] ; then |
| 880 # Start tracking $window_id and resume the screensaver once it disappears | 930 # Start tracking $window_id and resume the screensaver once it disappears |
| 881 ( track_window ) 2> /dev/null > /dev/null & | 931 ( track_window ) 2> /dev/null > /dev/null & |
| 882 fi | 932 fi |
| 883 | 933 |
| 884 if [ $result -eq 0 ]; then | 934 if [ $result -eq 0 ]; then |
| 885 exit_success | 935 exit_success |
| 886 else | 936 else |
| 887 exit_failure_operation_failed | 937 exit_failure_operation_failed |
| 888 fi | 938 fi |
| OLD | NEW |