X-Git-Url: http://git.hungrycats.org/cgi-bin/gitweb.cgi?p=xscreensaver;a=blobdiff_plain;f=hacks%2Fvidwhacker;h=45175a921ba88c96f36e7e753dad6d2073dcff19;hp=a27e0c2b3e1db152626be23c60f6fdf0dcca1e5e;hb=5832fe184606766fef23369159306c0a5799aeb0;hpb=af290bcdf2d1c61efc8aaaff653745c900cbe98c diff --git a/hacks/vidwhacker b/hacks/vidwhacker index a27e0c2b..45175a92 100755 --- a/hacks/vidwhacker +++ b/hacks/vidwhacker @@ -12,8 +12,8 @@ # # # This script grabs a frame of video, then uses various pbm filters to -# munge the image in random nefarious ways, then uses xv to put it on -# the root window. This works out really nicely if you just feed some +# munge the image in random nefarious ways, then uses xli or xv to put it +# on the root window. This works out really nicely if you just feed some # random TV station into it... # # The video grabbing part is SGI-specific -- if you want to use this on @@ -42,6 +42,32 @@ tmp_ppm4=$tmp-4.ppm tmp_ppmS=$tmp-S.ppm +# Figure out whether to use xli or xv. +pick_displayer() { + IFS=: + for p in $PATH; do + if [ "$p" = "" ]; then p=. ; fi + if [ -x $p/xli ]; then + displayer=$p/xli + displayer_args="-quiet" + displayer_win_args="" + displayer_root_args="-onroot -center -border black" + return + elif [ -x $p/xv ]; then + displayer=$p/xv + displayer_args="-quick24" + displayer_win_args="-geom +0+0" + displayer_root_args="-root -rmode 5 -noresetroot -rfg black -rbg black -viewonly" + + return + fi + done + IFS= + + echo "$0: neither xli nor xv found on \$PATH" + exit -1 +} + # Process command-line args getargs() { @@ -83,12 +109,12 @@ getargs() { shift done - xvargs="-quick24" + pick_displayer if [ "$onroot" = true ]; then - xvargs="$xvargs -root -rmode 5 -noresetroot -rfg black -rbg black -viewonly" + displayer_args="$displayer_args $displayer_root_args" else - xvargs="$xvargs -geom +0+0" + displayer_args="$displayer_args $displayer_win_args" fi @@ -300,7 +326,7 @@ whack() { } -# Kill off the xv subprocess, if it's running +# Kill off the xli or xv subprocess, if it's running # kill_pid() { if [ "$pid" != "" ]; then @@ -345,11 +371,12 @@ main() { # Loop grabbing and frobbing images. # - # If we're running on the root, run xv in the foreground (with -exit) - # and then wait. + # If we're running on the root, run xv or xli in the foreground + # (with -exit, if xv) and then wait. # - # If we're running in a window, spawn xv in the background; then when - # it's time to put up the new image, kill off the currently-running xv. + # If we're running in a window, spawn xv or xli in the background; then + # when it's time to put up the new image, kill off the currently-running + # xv or xli. if [ "$verbose" = true ]; then whack @@ -370,23 +397,24 @@ main() { else - pnmtosgi < $tmp_ppm3 > $tmp_ppm2 - rm -f $tmp_ppm3 +# pnmtosgi < $tmp_ppm3 > $tmp_ppm2 +# rm -f $tmp_ppm3 + mv $tmp_ppm3 $tmp_ppm2 if [ -s $tmp_ppm2 ]; then if [ "$verbose" = true ]; then - echo "launching xv $xvargs $tmp_ppm2" >&2 + echo "launching $displayer $displayer_args $tmp_ppm2" >&2 ls -lF $tmp_ppm2 fi mv $tmp_ppm2 $tmp_ppm0 - xv $xvargs $tmp_ppm0 & + eval "$displayer $displayer_args $tmp_ppm0 &" # this doesn't work -- leaves xv processes around, instead of stray xset # data. Sigh. # # # cat the file so that we can nuke it without racing against xv. -# cat $tmp_ppm2 | xv $xvargs - & +# cat $tmp_ppm2 | $displayer $displayer_args - & pid=$! fi