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 |