| 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 # |
| 11 # LICENSE: | 11 # LICENSE: |
| 12 # | 12 # |
| 13 #--------------------------------------------- | 13 #--------------------------------------------- |
| 14 | 14 |
| 15 manualpage() | 15 manualpage() |
| 16 { | 16 { |
| 17 cat << _MANUALPAGE | 17 cat << _MANUALPAGE |
| 18 _MANUALPAGE | 18 _MANUALPAGE |
| 19 } | 19 } |
| 20 | 20 |
| 21 usage() | 21 usage() |
| 22 { | 22 { |
| 23 cat << _USAGE | 23 cat << _USAGE |
| 24 _USAGE | 24 _USAGE |
| 25 } | 25 } |
| 26 | 26 |
| 27 #@xdg-utils-common@ | 27 #@xdg-utils-common@ |
| 28 | 28 |
| 29 # Check if we can use "mv -T" | 29 # Check if we can use "mv -T" |
| 30 if mv -T ... ... 2>&1 | grep '\.\.\.' > /dev/null ; then | 30 if mv -T ... ... 2>&1 | grep '\.\.\.' > /dev/null ; then |
| 31 # We can securely move files in /tmp with mv -T | 31 # We can securely move files in /tmp with mv -T |
| 32 DEBUG 1 "mv -T available" | 32 DEBUG 1 "mv -T available" |
| 33 MV="mv -T" | 33 MV="mv -T" |
| 34 screensaver_file="/tmp/xdg-screensaver-$USER-"`echo $DISPLAY | sed 's/:/-/g'` | 34 screensaver_file="/tmp/xdg-screensaver-$USER-"`echo $DISPLAY | sed 's/:/-/g'` |
| 35 else | 35 else |
| 36 # No secure moves available, use home dir | 36 # No secure moves available, use home dir |
| 37 DEBUG 1 "mv -T not available" | 37 DEBUG 1 "mv -T not available" |
| 38 MV="mv" | 38 MV="mv" |
| 39 screensaver_file="$HOME/.xdg-screensaver-"`echo $(hostname)-$DISPLAY | sed 's
/:/-/g'` | 39 screensaver_file="$HOME/.xdg-screensaver-"`echo $(hostname)-$DISPLAY | sed 's
/:/-/g'` |
| 40 fi | 40 fi |
| 41 lockfile_command=`which lockfile 2> /dev/null` | 41 lockfile_command=`which lockfile 2> /dev/null` |
| 42 | 42 |
| 43 lockfile() | 43 lockfile() |
| 44 { | 44 { |
| 45 if [ -n "$lockfile_command" ] ; then | 45 if [ -n "$lockfile_command" ] ; then |
| 46 $lockfile_command -1 -l 10 -s 3 "$screensaver_file".lock | 46 $lockfile_command -1 -l 10 -s 3 "$screensaver_file".lock |
| 47 else | 47 else |
| 48 # Poor man's attempt at doing a lockfile | 48 # Poor man's attempt at doing a lockfile |
| 49 # Be careful not to facilitate a symlink attack | 49 # Be careful not to facilitate a symlink attack |
| 50 local try | 50 local try |
| 51 try=0 | 51 try=0 |
| 52 while ! ln -s "$screensaver_file".lock "$screensaver_file".lock 2> /dev/nul
l; | 52 while ! ln -s "$screensaver_file".lock "$screensaver_file".lock 2> /dev/nul
l; |
| 53 do | 53 do |
| 54 sleep 1 | 54 sleep 1 |
| 55 try=$(($try+1)) | 55 try=$(($try+1)) |
| 56 if [ $try -eq 3 ] ; then | 56 if [ $try -eq 3 ] ; then |
| 57 rm -f "$screensaver_file".lock || return # Can't remove lockfile | 57 rm -f "$screensaver_file".lock || return # Can't remove lockfile |
| 58 try=0 | 58 try=0 |
| 59 fi | 59 fi |
| 60 done | 60 done |
| 61 fi | 61 fi |
| 62 } | 62 } |
| 63 | 63 |
| 64 unlockfile() | 64 unlockfile() |
| 65 { | 65 { |
| 66 rm -f "$screensaver_file".lock | 66 rm -f "$screensaver_file".lock |
| (...skipping 12 matching lines...) Expand all Loading... |
| 79 fi | 79 fi |
| 80 fi | 80 fi |
| 81 if [ "$1" = "reset" ] ; then | 81 if [ "$1" = "reset" ] ; then |
| 82 if xset -q | grep 'DPMS is Enabled' > /dev/null 2> /dev/null; then | 82 if xset -q | grep 'DPMS is Enabled' > /dev/null 2> /dev/null; then |
| 83 xset dpms force on | 83 xset dpms force on |
| 84 fi | 84 fi |
| 85 fi | 85 fi |
| 86 | 86 |
| 87 case "$DE" in | 87 case "$DE" in |
| 88 kde) | 88 kde) |
| 89 screensaver_kde "$1" | 89 if [ x"$KDE_SESSION_VERSION" = x"4" ]; then |
| 90 screensaver_freedesktop "$1" |
| 91 else |
| 92 screensaver_kde "$1" |
| 93 fi |
| 90 ;; | 94 ;; |
| 91 | 95 |
| 92 gnome) | 96 gnome_screensaver) |
| 93 screensaver_gnome "$1" | 97 screensaver_gnome_screensaver "$1" |
| 94 ;; | 98 ;; |
| 95 | 99 |
| 96 xscreensaver) | 100 xscreensaver) |
| 97 screensaver_xscreensaver "$1" | 101 screensaver_xscreensaver "$1" |
| 98 ;; | 102 ;; |
| 99 esac | 103 esac |
| 100 | 104 |
| 101 if [ "$1" = "suspend" ] ; then | 105 if [ "$1" = "suspend" ] ; then |
| 102 # Save DPMS state | 106 # Save DPMS state |
| 103 if xset -q | grep 'DPMS is Enabled' > /dev/null 2> /dev/null; then | 107 if xset -q | grep 'DPMS is Enabled' > /dev/null 2> /dev/null; then |
| (...skipping 21 matching lines...) Expand all Loading... |
| 125 perform_action resume | 129 perform_action resume |
| 126 else | 130 else |
| 127 unlockfile | 131 unlockfile |
| 128 fi | 132 fi |
| 129 } | 133 } |
| 130 | 134 |
| 131 do_resume() | 135 do_resume() |
| 132 { | 136 { |
| 133 lockfile # Obtain lockfile | 137 lockfile # Obtain lockfile |
| 134 # Find the PID of the trackingprocess | 138 # Find the PID of the trackingprocess |
| 135 xprop_pid=`grep "$window_id:" "$screensaver_file" 2> /dev/null | cut -d ':' -f
2` | 139 xprop_pid=`grep "$window_id:" "$screensaver_file" 2> /dev/null | cut -d ':' -f
2` |
| 136 unlockfile # Free lockfile | 140 unlockfile # Free lockfile |
| 137 if [ -n "$xprop_pid" ] && ps -p "$xprop_pid" 2> /dev/null | grep xprop > /dev/
null; then | 141 if [ -n "$xprop_pid" ] && ps -p "$xprop_pid" 2> /dev/null | grep xprop > /dev/
null; then |
| 138 # Kill the tracking process | 142 # Kill the tracking process |
| 139 kill -s TERM $xprop_pid | 143 kill -s TERM $xprop_pid |
| 140 fi | 144 fi |
| 141 cleanup_suspend | 145 cleanup_suspend |
| 142 } | 146 } |
| 143 | 147 |
| 144 XPROP=`which xprop 2> /dev/null` | 148 XPROP=`which xprop 2> /dev/null` |
| 145 | 149 |
| 146 check_window_id() | 150 check_window_id() |
| 147 { | 151 { |
| 148 if [ -z "$XPROP" ]; then | 152 if [ -z "$XPROP" ]; then |
| 149 DEBUG 3 "xprop not found" | 153 DEBUG 3 "xprop not found" |
| 150 return | 154 return |
| 151 fi | 155 fi |
| 152 DEBUG 2 "Running $XPROP -id $window_id" | 156 DEBUG 2 "Running $XPROP -id $window_id" |
| 153 if $XPROP -id $window_id > /dev/null 2> /dev/null; then | 157 if $XPROP -id $window_id > /dev/null 2> /dev/null; then |
| 154 DEBUG 3 Window $window_id exists | 158 DEBUG 3 Window $window_id exists |
| 155 else | 159 else |
| 156 DEBUG 3 Window $window_id does not exist | 160 DEBUG 3 Window $window_id does not exist |
| 157 exit_failure_operation_failed "Window $window_id does not exist" | 161 exit_failure_operation_failed "Window $window_id does not exist" |
| 158 fi | 162 fi |
| 159 } | 163 } |
| 160 | 164 |
| 161 track_window() | 165 track_window() |
| (...skipping 10 matching lines...) Expand all Loading... |
| 172 # Return if $window_id is being tracked already | 176 # Return if $window_id is being tracked already |
| 173 ( | 177 ( |
| 174 already_tracked=1 | 178 already_tracked=1 |
| 175 IFS_save="$IFS" | 179 IFS_save="$IFS" |
| 176 IFS=":" | 180 IFS=":" |
| 177 while read wid pid; do | 181 while read wid pid; do |
| 178 if ps -p "$pid" 2> /dev/null | grep xprop > /dev/null; then | 182 if ps -p "$pid" 2> /dev/null | grep xprop > /dev/null; then |
| 179 echo "$wid:$pid" | 183 echo "$wid:$pid" |
| 180 if [ $wid = $window_id ] ; then | 184 if [ $wid = $window_id ] ; then |
| 181 already_tracked=0 | 185 already_tracked=0 |
| 182 fi | 186 fi |
| 183 fi | 187 fi |
| 184 done | 188 done |
| 185 IFS="$IFS_save" | 189 IFS="$IFS_save" |
| 186 exit $already_tracked | 190 exit $already_tracked |
| 187 ) < $screensaver_file > $tmpfile | 191 ) < $screensaver_file > $tmpfile |
| 188 already_tracked=$? | 192 already_tracked=$? |
| 189 | 193 |
| 190 if [ "$already_tracked" -eq "0" ] ; then | 194 if [ "$already_tracked" -eq "0" ] ; then |
| 191 $MV "$tmpfile" "$screensaver_file" | 195 $MV "$tmpfile" "$screensaver_file" |
| 192 # We are already tracking $window_id, don't do anything | 196 # We are already tracking $window_id, don't do anything |
| (...skipping 11 matching lines...) Expand all Loading... |
| 204 # Wait for xprop to edit, it means that the window disappeared | 208 # Wait for xprop to edit, it means that the window disappeared |
| 205 wait $xprop_pid | 209 wait $xprop_pid |
| 206 # Clean up the administration and resume the screensaver | 210 # Clean up the administration and resume the screensaver |
| 207 cleanup_suspend | 211 cleanup_suspend |
| 208 } | 212 } |
| 209 | 213 |
| 210 screensaver_freedesktop() | 214 screensaver_freedesktop() |
| 211 { | 215 { |
| 212 case "$1" in | 216 case "$1" in |
| 213 suspend) | 217 suspend) |
| 214 #FIXME (get/store cookie) | 218 dbus-send --session \ |
| 215 qdbus org.freedesktop.ScreenSaver /ScreenSaver org.freedesktop.ScreenSav
er.Inhibit $window_id xdg-screensaver > /dev/null | 219 --dest=org.freedesktop.ScreenSaver \ |
| 220 --type=method_call \ |
| 221 --print-reply \ |
| 222 --reply-timeout=2000 \ |
| 223 /ScreenSaver \ |
| 224 org.freedesktop.ScreenSaver.Inhibit \ |
| 225 string:$window_id \ |
| 226 string:xdg-screensaver \ |
| 227 | grep uint32 | cut -d ' ' -f 5 >| "$screensaver_file.cookie"
\ |
| 228 2> /dev/null |
| 216 result=$? | 229 result=$? |
| 217 ;; | 230 ;; |
| 218 | 231 |
| 219 resume) | 232 resume) |
| 220 qdbus org.freedesktop.ScreenSaver /ScreenSaver org.freedesktop.ScreenSav
er.SetActive true > /dev/null | 233 if [ -f "$screensaver_file.cookie" ] ; then |
| 234 value=`cat "$screensaver_file.cookie"` |
| 235 dbus-send --session \ |
| 236 --dest=org.freedesktop.ScreenSaver \ |
| 237 --type=method_call \ |
| 238 /ScreenSaver \ |
| 239 org.freedesktop.ScreenSaver.UnInhibit \ |
| 240 uint32:$value \ |
| 241 2> /dev/null |
| 242 rm -f "$screensaver_file.cookie" |
| 243 fi |
| 221 result=$? | 244 result=$? |
| 222 ;; | 245 ;; |
| 223 | 246 |
| 224 activate) | 247 activate) |
| 225 qdbus org.freedesktop.ScreenSaver /ScreenSaver org.freedesktop.ScreenSav
er.SetActive true > /dev/null | 248 dbus-send --session \ |
| 249 --dest=org.freedesktop.ScreenSaver \ |
| 250 --type=method_call \ |
| 251 /ScreenSaver \ |
| 252 org.freedesktop.ScreenSaver.SetActive \ |
| 253 boolean:true \ |
| 254 2> /dev/null |
| 226 result=$? | 255 result=$? |
| 227 ;; | 256 ;; |
| 228 | 257 |
| 229 lock) | 258 lock) |
| 230 qdbus org.freedesktop.ScreenSaver /ScreenSaver org.freedesktop.ScreenSav
er.Lock > /dev/null | 259 dbus-send --session \ |
| 260 --dest=org.freedesktop.ScreenSaver \ |
| 261 --type=method_call \ |
| 262 /ScreenSaver \ |
| 263 org.freedesktop.ScreenSaver.Lock \ |
| 264 2> /dev/null |
| 231 ;; | 265 ;; |
| 232 | 266 |
| 233 reset) | 267 reset) |
| 234 #FIXME (cookies?) | 268 if [ -f "$screensaver_file.cookie" ] ; then |
| 235 qdbus org.freedesktop.ScreenSaver /ScreenSaver org.freedesktop.ScreenSav
er.UnInhibit $window_id > /dev/null | 269 value=`cat "$screensaver_file.cookie"` |
| 270 dbus-send --session \ |
| 271 --dest=org.freedesktop.ScreenSaver \ |
| 272 --type=method_call \ |
| 273 /ScreenSaver \ |
| 274 org.freedesktop.ScreenSaver.UnInhibit \ |
| 275 uint32:$value \ |
| 276 2> /dev/null |
| 277 rm -f "$screensaver_file.cookie" |
| 278 fi |
| 236 result=$? | 279 result=$? |
| 237 ;; | 280 ;; |
| 238 | 281 |
| 239 status) | 282 status) |
| 240 status=`qdbus org.freedesktop.ScreenSaver /ScreenSaver org.freedesktop.S
creenSaver.GetActive` | 283 status=`dbus-send --session \ |
| 284 --dest=org.freedesktop.ScreenSaver \ |
| 285 --type=method_call \ |
| 286 --print-reply \ |
| 287 --reply-timeout=2000 \ |
| 288 /ScreenSaver \ |
| 289 org.freedesktop.ScreenSaver.GetActive \ |
| 290 | grep boolean | cut -d ' ' -f 5` |
| 241 result=$? | 291 result=$? |
| 242 if [ x"$status" = "xtrue" ]; then | 292 if [ x"$status" = "xtrue" ]; then |
| 243 echo "enabled" | 293 echo "enabled" |
| 244 elif [ x"$status" = "xfalse" ]; then | 294 elif [ x"$status" = "xfalse" ]; then |
| 245 echo "disabled" | 295 echo "disabled" |
| 246 else | 296 else |
| 247 echo "ERROR: dbus org.freedesktop.ScreenSaver.GetActive returned '$s
tatus'" >&2 | 297 echo "ERROR: dbus org.freedesktop.ScreenSaver.GetActive returned '$s
tatus'" >&2 |
| 248 return 1 | 298 return 1 |
| 249 fi | 299 fi |
| 250 ;; | 300 ;; |
| 251 | 301 |
| 252 *) | 302 *) |
| 253 echo "ERROR: Unknown command '$1'" >&2 | 303 echo "ERROR: Unknown command '$1'" >&2 |
| 254 return 1 | 304 return 1 |
| 255 ;; | 305 ;; |
| 256 esac | 306 esac |
| 257 } | 307 } |
| 258 | 308 |
| 259 screensaver_kde() | 309 screensaver_kde() |
| 260 { | 310 { |
| 261 case "$1" in | 311 case "$1" in |
| 262 suspend) | 312 suspend) |
| 263 dcop kdesktop KScreensaverIface enable false > /dev/null | 313 dcop kdesktop KScreensaverIface enable false > /dev/null |
| 264 result=$? | 314 result=$? |
| 265 ;; | 315 ;; |
| 266 | 316 |
| 267 resume) | 317 resume) |
| 268 dcop kdesktop KScreensaverIface configure > /dev/null | 318 dcop kdesktop KScreensaverIface configure > /dev/null |
| 269 result=$? | 319 result=$? |
| 270 ;; | 320 ;; |
| 271 | 321 |
| 272 activate) | 322 activate) |
| 273 dcop kdesktop KScreensaverIface save > /dev/null | 323 dcop kdesktop KScreensaverIface save > /dev/null |
| 274 result=$? | 324 result=$? |
| 275 ;; | 325 ;; |
| 276 | 326 |
| 277 lock) | 327 lock) |
| 278 dcop kdesktop KScreensaverIface lock > /dev/null | 328 dcop kdesktop KScreensaverIface lock > /dev/null |
| 279 result=$? | 329 result=$? |
| 280 ;; | 330 ;; |
| 281 | 331 |
| 282 reset) | 332 reset) |
| 283 # Turns the screensaver off right now | 333 # Turns the screensaver off right now |
| 284 dcop kdesktop KScreensaverIface quit > /dev/null | 334 dcop kdesktop KScreensaverIface quit > /dev/null |
| 285 result=$? | 335 result=$? |
| 286 ;; | 336 ;; |
| 287 | 337 |
| 288 status) | 338 status) |
| 289 status=`dcop kdesktop KScreensaverIface isEnabled` | 339 status=`dcop kdesktop KScreensaverIface isEnabled` |
| 290 result=$? | 340 result=$? |
| 291 if [ x"$status" = "xtrue" ]; then | 341 if [ x"$status" = "xtrue" ]; then |
| (...skipping 26 matching lines...) Expand all Loading... |
| 318 if ps -p "$pid" 2> /dev/null | grep xprop > /dev/null; then | 368 if ps -p "$pid" 2> /dev/null | grep xprop > /dev/null; then |
| 319 echo "$wid:$pid" | 369 echo "$wid:$pid" |
| 320 fi | 370 fi |
| 321 done | 371 done |
| 322 IFS="$IFS_save" | 372 IFS="$IFS_save" |
| 323 ) > $tmpfile | 373 ) > $tmpfile |
| 324 if [ -s "$tmpfile" ] ; then | 374 if [ -s "$tmpfile" ] ; then |
| 325 # Suspend pending, don't do a thing | 375 # Suspend pending, don't do a thing |
| 326 $MV "$tmpfile" "$screensaver_file" | 376 $MV "$tmpfile" "$screensaver_file" |
| 327 unlockfile | 377 unlockfile |
| 328 return | 378 return |
| 329 fi | 379 fi |
| 330 $MV "$tmpfile" "$screensaver_file" | 380 $MV "$tmpfile" "$screensaver_file" |
| 331 unlockfile | 381 unlockfile |
| 332 (while [ -f "$screensaver_file" ]; do $*; sleep 50; done) > /dev/null 2> /dev/
null & | 382 (while [ -f "$screensaver_file" ]; do $*; sleep 50; done) > /dev/null 2> /dev/
null & |
| 333 } | 383 } |
| 334 | 384 |
| 335 screensaver_gnome() | 385 screensaver_gnome_screensaver() |
| 336 { | 386 { |
| 337 # TODO | 387 # TODO |
| 338 # There seems to be a DBUS interface for gnome-screensaver | 388 # There seems to be a DBUS interface for gnome-screensaver |
| 339 # See http://lists.mplayerhq.hu/pipermail/mplayer-dev-eng/2006-April/042579.html
and | 389 # See http://lists.mplayerhq.hu/pipermail/mplayer-dev-eng/2006-April/042579.html
and |
| 340 # http://cvs.gnome.org/viewcvs/gnome-screensaver/src/gs-listener-dbus.c?rev=1.36
&view=log | 390 # http://cvs.gnome.org/viewcvs/gnome-screensaver/src/gs-listener-dbus.c?rev=1.36
&view=log |
| 341 # A problem seems to be that Inhibit is tied to the lifetime of the DBUS appname
and | 391 # A problem seems to be that Inhibit is tied to the lifetime of the DBUS appname
and |
| 342 # this can not be used from a script | 392 # this can not be used from a script |
| 343 case "$1" in | 393 case "$1" in |
| 344 suspend) | 394 suspend) |
| 345 screensaver_suspend_loop gnome-screensaver-command --poke | 395 screensaver_suspend_loop gnome-screensaver-command --poke |
| 346 result=0 | 396 result=0 |
| 347 ;; | 397 ;; |
| 348 | 398 |
| 349 resume) | 399 resume) |
| 350 # Automatic resume when $screensaver_file disappears | 400 # Automatic resume when $screensaver_file disappears |
| 351 result=0 | 401 result=0 |
| 352 ;; | 402 ;; |
| 353 | 403 |
| 354 activate) | 404 activate) |
| 355 gnome-screensaver-command --activate > /dev/null 2> /dev/null | 405 gnome-screensaver-command --activate > /dev/null 2> /dev/null |
| 356 result=$? | 406 result=$? |
| 357 ;; | 407 ;; |
| 358 | 408 |
| 359 lock) | 409 lock) |
| 360 gnome-screensaver-command --lock > /dev/null 2> /dev/null | 410 gnome-screensaver-command --lock > /dev/null 2> /dev/null |
| 361 result=$? | 411 result=$? |
| 362 ;; | 412 ;; |
| 363 | 413 |
| 364 reset) | 414 reset) |
| 365 # Turns the screensaver off right now | 415 # Turns the screensaver off right now |
| 366 gnome-screensaver-command --deactivate > /dev/null 2> /dev/null | 416 gnome-screensaver-command --deactivate > /dev/null 2> /dev/null |
| 367 result=$? | 417 result=$? |
| 368 ;; | 418 ;; |
| 369 | 419 |
| 370 status) | 420 status) |
| 371 result=0 | 421 result=0 |
| 372 if [ -f "$screensaver_file" ] ; then | 422 if [ -f "$screensaver_file" ] ; then |
| 373 echo "disabled" | 423 echo "disabled" |
| 374 elif gnome-screensaver-command --query > /dev/null 2> /dev/null; then | 424 elif gnome-screensaver-command --query > /dev/null 2> /dev/null; then |
| 375 echo "enabled" | 425 echo "enabled" |
| 376 else | 426 else |
| 377 # Something is wrong | 427 # Something is wrong |
| 378 echo "disabled" | 428 echo "disabled" |
| 379 fi | 429 fi |
| 380 ;; | 430 ;; |
| 381 | 431 |
| 382 *) | 432 *) |
| 383 echo "ERROR: Unknown command '$1" >&2 | 433 echo "ERROR: Unknown command '$1" >&2 |
| 384 return 1 | 434 return 1 |
| 385 ;; | 435 ;; |
| 386 esac | 436 esac |
| 387 } | 437 } |
| 388 | 438 |
| 389 screensaver_xscreensaver() | 439 screensaver_xscreensaver() |
| 390 { | 440 { |
| 391 case "$1" in | 441 case "$1" in |
| 392 suspend) | 442 suspend) |
| 393 screensaver_suspend_loop xscreensaver-command -deactivate | 443 screensaver_suspend_loop xscreensaver-command -deactivate |
| 394 result=0 | 444 result=0 |
| 395 ;; | 445 ;; |
| 396 | 446 |
| 397 resume) | 447 resume) |
| 398 # Automatic resume when $screensaver_file disappears | 448 # Automatic resume when $screensaver_file disappears |
| 399 result=0 | 449 result=0 |
| 400 ;; | 450 ;; |
| 401 | 451 |
| 402 activate) | 452 activate) |
| 403 xscreensaver-command -activate > /dev/null 2> /dev/null | 453 xscreensaver-command -activate > /dev/null 2> /dev/null |
| 404 result=$? | 454 result=$? |
| 405 ;; | 455 ;; |
| 406 | 456 |
| 407 lock) | 457 lock) |
| 408 xscreensaver-command -lock > /dev/null 2> /dev/null | 458 xscreensaver-command -lock > /dev/null 2> /dev/null |
| 409 result=$? | 459 result=$? |
| 410 ;; | 460 ;; |
| 411 | 461 |
| 412 reset) | 462 reset) |
| 413 # Turns the screensaver off right now | 463 # Turns the screensaver off right now |
| 414 xscreensaver-command -deactivate > /dev/null 2> /dev/null | 464 xscreensaver-command -deactivate > /dev/null 2> /dev/null |
| 415 result=$? | 465 result=$? |
| 416 ;; | 466 ;; |
| 417 | 467 |
| 418 status) | 468 status) |
| 419 result=0 | 469 result=0 |
| 420 if [ -f "$screensaver_file" ] ; then | 470 if [ -f "$screensaver_file" ] ; then |
| 421 echo "disabled" | 471 echo "disabled" |
| (...skipping 10 matching lines...) Expand all Loading... |
| 432 } | 482 } |
| 433 | 483 |
| 434 [ x"$1" != x"" ] || exit_failure_syntax | 484 [ x"$1" != x"" ] || exit_failure_syntax |
| 435 | 485 |
| 436 action= | 486 action= |
| 437 window_id= | 487 window_id= |
| 438 | 488 |
| 439 case $1 in | 489 case $1 in |
| 440 suspend) | 490 suspend) |
| 441 action="$1" | 491 action="$1" |
| 442 | 492 |
| 443 shift | 493 shift |
| 444 | 494 |
| 445 if [ -z "$1" ] ; then | 495 if [ -z "$1" ] ; then |
| 446 exit_failure_syntax "WindowID argument missing" | 496 exit_failure_syntax "WindowID argument missing" |
| 447 fi | 497 fi |
| 448 | 498 |
| 449 window_id="$1" | 499 window_id="$1" |
| 450 check_window_id | 500 check_window_id |
| 451 ;; | 501 ;; |
| 452 | 502 |
| 453 resume) | 503 resume) |
| 454 action="$1" | 504 action="$1" |
| 455 | 505 |
| 456 shift | 506 shift |
| 457 | 507 |
| 458 if [ -z "$1" ] ; then | 508 if [ -z "$1" ] ; then |
| 459 exit_failure_syntax "WindowID argument missing" | 509 exit_failure_syntax "WindowID argument missing" |
| 460 fi | 510 fi |
| 461 | 511 |
| 462 window_id="$1" | 512 window_id="$1" |
| 463 check_window_id | 513 check_window_id |
| 464 ;; | 514 ;; |
| 465 | 515 |
| 466 activate) | 516 activate) |
| 467 action="$1" | 517 action="$1" |
| 468 ;; | 518 ;; |
| 469 | 519 |
| 470 lock) | 520 lock) |
| 471 action="$1" | 521 action="$1" |
| 472 ;; | 522 ;; |
| 473 | 523 |
| 474 reset) | 524 reset) |
| 475 action="$1" | 525 action="$1" |
| 476 ;; | 526 ;; |
| 477 | 527 |
| 478 status) | 528 status) |
| 479 action="$1" | 529 action="$1" |
| 480 ;; | 530 ;; |
| 481 | 531 |
| 482 *) | 532 *) |
| 483 exit_failure_syntax "unknown command '$1'" | 533 exit_failure_syntax "unknown command '$1'" |
| 484 ;; | 534 ;; |
| 485 esac | 535 esac |
| 486 | 536 |
| 487 detectDE | 537 detectDE |
| 488 # Consider "xscreensaver" a separate DE | 538 # Consider "xscreensaver" a separate DE |
| 489 xscreensaver-command -version 2> /dev/null | grep XScreenSaver > /dev/null && DE
="xscreensaver" | 539 xscreensaver-command -version 2> /dev/null | grep XScreenSaver > /dev/null && DE
="xscreensaver" |
| 540 # Consider "gnome-screensaver" a separate DE |
| 541 gnome-screensaver-command -q > /dev/null 2>&1 && DE="gnome_screensaver" |
| 490 | 542 |
| 491 if [ "$action" = "resume" ] ; then | 543 if [ "$action" = "resume" ] ; then |
| 492 do_resume | 544 do_resume |
| 493 exit_success | 545 exit_success |
| 494 fi | 546 fi |
| 495 | 547 |
| 496 perform_action "$action" | 548 perform_action "$action" |
| 497 | 549 |
| 498 if [ "$action" = "suspend" ] ; then | 550 if [ "$action" = "suspend" ] ; then |
| 499 # Start tracking $window_id and resume the screensaver once it disappears | 551 # Start tracking $window_id and resume the screensaver once it disappears |
| 500 ( track_window ) 2> /dev/null > /dev/null & | 552 ( track_window ) 2> /dev/null > /dev/null & |
| 501 fi | 553 fi |
| 502 | 554 |
| 503 if [ $result -eq 0 ]; then | 555 if [ $result -eq 0 ]; then |
| 504 exit_success | 556 exit_success |
| 505 else | 557 else |
| 506 exit_failure_operation_failed | 558 exit_failure_operation_failed |
| 507 fi | 559 fi |
| OLD | NEW |