chiark / gitweb /
dot/emacs: Bind a key to `magit-toggle-buffer-lock'.
[profile] / bin / remote-slideshow
CommitLineData
a10bf242
MW
1#! /bin/sh -e
2
3case $#,$2 in
4 0,* | 1,*) ok=nil ;;
5 *,*:*) ok=t ;;
6 *) ok=nil ;;
7esac
8case $ok in
9 nil) echo >&2 "usage: $0 DIR,... HOST:DISP [CMD ARGS ...]"; exit 2; ;;
10esac
11dirs=$1 host=${2%:*} dpy=${2##*:}; shift 2
12case $#,$1 in
73b72c0a 13 0, | 1,:slideshow)
5dca0cf7 14 set -- /usr/lib/xscreensaver/glslideshow -duration 10 -pan 10 \
a10bf242
MW
15 -xrm "'*desktopGrabber: ./getimg %s'"
16 ;;
17 1,:photopile)
18 set -- /usr/lib/xscreensaver/photopile -no-titles -no-polaroid -shadows \
19 -xrm "'*desktopGrabber: ./getimg %s'"
20 ;;
21esac
22
23t=$(mktemp -d "${TMPDIR-/tmp}/remote-slidesshow.XXXXXXXX")
24mkfifo "$t/pipe"
25exec 3<>"$t/pipe"
26rm -rf "$t"
27
28ssh -ax "$host" "
29 set -e
30 tmp=\$(mktemp -d \"\${TMPDIR-/tmp}/remote-slideshow.XXXXXXXX\")
31 trap 'cd / && rm -rf \$tmp' EXIT INT TERM HUP
32 cd \$tmp
33 IMAGEFILE=\$tmp/img; export IMAGEFILE
34 DISPLAY=:$dpy; export DISPLAY
35 exec 3<&0 4>&1
36 cat >getimg <<'EOF'
37#! /bin/sh -e
38rm -f img
39echo \"\$IMAGEFILE\" >&4
40xscreensaver-command -deactivate >/dev/null 2>&1 || :
41IFS= read -r f <&3
42exec xscreensaver-getimage -directory \"\${IMAGEFILE%/*}\" -file img \"\$@\"
43EOF
44 chmod +x getimg
45 $*" <&3 |
46while IFS= read -r rdir; do
47 set -- \( -false
48 for e in jpg jpeg pjpeg pjpg png gif tif tiff xbm xpm; do
49 set -- "$@" -o -name "*.$e"
50 done
51 set -- "$@" \) -type f -print -o -type d \( -false
52 dd=$dirs
53 while :; do
54 case $dd in
55 "") break ;;
56 *,*) d=${dd##*,} dd=${dd%,*} ;;
57 *) d=$dd dd= ;;
58 esac
59 for i in $(find "$d" -name .slideshow-ignore -type f -print); do
60 while IFS= read -r line; do
61 case $line in \#*) continue ;; esac
62 set -- "$@" -o -path "${i%/*}/$line"
63 done <"$i"
64 done
65 set -- "$d" "$@"
66 done
67 set -- "$@" \) -prune
68 f=$(find "$@" | shuf -n1)
69 echo "$f"
70 scp "$f" "$host:$rdir" >/dev/null 2>&1
71 echo done >&3
72done