| 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 317 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 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; | 338 fi |
| 339 else DE="" | 339 |
| 340 if [ x"$DE" = x"" ]; then |
| 341 # fallback to checking $DESKTOP_SESSION |
| 342 case "$DESKTOP_SESSION" in |
| 343 LXDE) |
| 344 DE=lxde; |
| 345 ;; |
| 346 xfce|xfce4) |
| 347 DE=xfce; |
| 348 ;; |
| 349 esac |
| 350 fi |
| 351 |
| 352 if [ x"$DE" = x"" ]; then |
| 353 # fallback to uname output for other platforms |
| 354 case "$(uname 2>/dev/null)" in |
| 355 Darwin) |
| 356 DE=darwin; |
| 357 ;; |
| 358 esac |
| 359 fi |
| 360 |
| 361 if [ x"$DE" = x"gnome" ]; then |
| 362 # gnome-default-applications-properties is only available in GNOME 2.x |
| 363 # but not in GNOME 3.x |
| 364 which gnome-default-applications-properties 2> /dev/null || DE="gnome3" |
| 340 fi | 365 fi |
| 341 } | 366 } |
| 342 | 367 |
| 343 #---------------------------------------------------------------------------- | 368 #---------------------------------------------------------------------------- |
| 344 # kfmclient exec/openURL can give bogus exit value in KDE <= 3.5.4 | 369 # kfmclient exec/openURL can give bogus exit value in KDE <= 3.5.4 |
| 345 # It also always returns 1 in KDE 3.4 and earlier | 370 # It also always returns 1 in KDE 3.4 and earlier |
| 346 # Simply return 0 in such case | 371 # Simply return 0 in such case |
| 347 | 372 |
| 348 kfmclient_fix_exit_code() | 373 kfmclient_fix_exit_code() |
| 349 { | 374 { |
| (...skipping 406 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 756 unlockfile | 781 unlockfile |
| 757 return | 782 return |
| 758 fi | 783 fi |
| 759 $MV "$tmpfile" "$screensaver_file" | 784 $MV "$tmpfile" "$screensaver_file" |
| 760 unlockfile | 785 unlockfile |
| 761 (while [ -f "$screensaver_file" ]; do $*; sleep 50; done) > /dev/null 2> /dev/
null & | 786 (while [ -f "$screensaver_file" ]; do $*; sleep 50; done) > /dev/null 2> /dev/
null & |
| 762 } | 787 } |
| 763 | 788 |
| 764 screensaver_gnome_screensaver() | 789 screensaver_gnome_screensaver() |
| 765 { | 790 { |
| 766 # TODO | 791 # DBUS interface for gnome-screensaver |
| 767 # There seems to be a DBUS interface for gnome-screensaver | 792 # http://people.gnome.org/~mccann/gnome-screensaver/docs/gnome-screensaver.html |
| 768 # See http://lists.mplayerhq.hu/pipermail/mplayer-dev-eng/2006-April/042579.html
and | |
| 769 # http://cvs.gnome.org/viewcvs/gnome-screensaver/src/gs-listener-dbus.c?rev=1.36
&view=log | |
| 770 # A problem seems to be that Inhibit is tied to the lifetime of the DBUS appname
and | |
| 771 # this can not be used from a script | |
| 772 case "$1" in | 793 case "$1" in |
| 773 suspend) | 794 suspend) |
| 774 screensaver_suspend_loop gnome-screensaver-command --poke | 795 screensaver_suspend_loop \ |
| 775 result=0 | 796 dbus-send --session \ |
| 797 --dest=org.gnome.ScreenSaver \ |
| 798 --type=method_call \ |
| 799 /org/gnome/ScreenSaver \ |
| 800 org.gnome.ScreenSaver.SimulateUserActivity \ |
| 801 2> /dev/null |
| 802 result=$? |
| 776 ;; | 803 ;; |
| 777 | 804 |
| 778 resume) | 805 resume) |
| 779 # Automatic resume when $screensaver_file disappears | 806 # Automatic resume when $screensaver_file disappears |
| 780 result=0 | 807 result=0 |
| 781 ;; | 808 ;; |
| 782 | 809 |
| 783 activate) | 810 activate) |
| 784 gnome-screensaver-command --activate > /dev/null 2> /dev/null | 811 dbus-send --session \ |
| 812 --dest=org.gnome.ScreenSaver \ |
| 813 --type=method_call \ |
| 814 /org/gnome/ScreenSaver \ |
| 815 org.gnome.ScreenSaver.SetActive \ |
| 816 boolean:true \ |
| 817 2> /dev/null |
| 785 result=$? | 818 result=$? |
| 786 ;; | 819 ;; |
| 787 | 820 |
| 788 lock) | 821 lock) |
| 789 gnome-screensaver-command --lock > /dev/null 2> /dev/null | 822 gnome-screensaver-command --lock > /dev/null 2> /dev/null |
| 790 result=$? | 823 result=$? |
| 791 ;; | 824 ;; |
| 792 | 825 |
| 793 reset) | 826 reset) |
| 794 # Turns the screensaver off right now | 827 # Turns the screensaver off right now |
| 795 gnome-screensaver-command --deactivate > /dev/null 2> /dev/null | 828 dbus-send --session \ |
| 829 --dest=org.gnome.ScreenSaver \ |
| 830 --type=method_call \ |
| 831 /org/gnome/ScreenSaver \ |
| 832 org.gnome.ScreenSaver.SimulateUserActivity \ |
| 833 2> /dev/null |
| 796 result=$? | 834 result=$? |
| 797 ;; | 835 ;; |
| 798 | 836 |
| 799 status) | 837 status) |
| 800 result=0 | 838 status=`dbus-send --session \ |
| 801 if [ -f "$screensaver_file" ] ; then | 839 --dest=org.gnome.ScreenSaver \ |
| 802 echo "disabled" | 840 --type=method_call \ |
| 803 elif gnome-screensaver-command --query > /dev/null 2> /dev/null; then | 841 --print-reply \ |
| 842 --reply-timeout=2000 \ |
| 843 /org/gnome/ScreenSaver \ |
| 844 org.gnome.ScreenSaver.GetActive \ |
| 845 | grep boolean | cut -d ' ' -f 5` |
| 846 result=$? |
| 847 if [ x"$status" = "xtrue" -o x"$status" = "xfalse" ]; then |
| 804 echo "enabled" | 848 echo "enabled" |
| 849 elif [ x"$result" != "x0" ]; then |
| 850 echo "ERROR: dbus org.gnome.ScreenSaver.GetActive returned '$status'
" >&2 |
| 851 return 1 |
| 805 else | 852 else |
| 806 # Something is wrong | |
| 807 echo "disabled" | 853 echo "disabled" |
| 808 fi | 854 fi |
| 809 ;; | 855 ;; |
| 810 | 856 |
| 811 *) | 857 *) |
| 812 echo "ERROR: Unknown command '$1" >&2 | 858 echo "ERROR: Unknown command '$1" >&2 |
| 813 return 1 | 859 return 1 |
| 814 ;; | 860 ;; |
| 815 esac | 861 esac |
| 816 } | 862 } |
| (...skipping 112 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 929 if [ "$action" = "suspend" ] ; then | 975 if [ "$action" = "suspend" ] ; then |
| 930 # Start tracking $window_id and resume the screensaver once it disappears | 976 # Start tracking $window_id and resume the screensaver once it disappears |
| 931 ( track_window ) 2> /dev/null > /dev/null & | 977 ( track_window ) 2> /dev/null > /dev/null & |
| 932 fi | 978 fi |
| 933 | 979 |
| 934 if [ $result -eq 0 ]; then | 980 if [ $result -eq 0 ]; then |
| 935 exit_success | 981 exit_success |
| 936 else | 982 else |
| 937 exit_failure_operation_failed | 983 exit_failure_operation_failed |
| 938 fi | 984 fi |
| OLD | NEW |