summaryrefslogtreecommitdiffstats
path: root/x11vnc/misc/x11vnc_loop
diff options
context:
space:
mode:
Diffstat (limited to 'x11vnc/misc/x11vnc_loop')
-rwxr-xr-xx11vnc/misc/x11vnc_loop89
1 files changed, 89 insertions, 0 deletions
diff --git a/x11vnc/misc/x11vnc_loop b/x11vnc/misc/x11vnc_loop
new file mode 100755
index 0000000..1a3e0a2
--- /dev/null
+++ b/x11vnc/misc/x11vnc_loop
@@ -0,0 +1,89 @@
+#!/bin/sh
+#
+# x11vnc_loop:
+#
+# Example startup script for connecting x11vnc to an X display
+# at system boot up and having it reconnect when the X server restarts.
+#
+# Run, in rc.local say, via, e.g.:
+#
+# /path/to/x11vnc_loop 1>> /var/tmp/x11vnc_loop.log 2>&1 &
+#
+# call with argument "once" or a number to limit the number of loops.
+#
+##########################################################################
+# The following needs to be customized:
+x11vnc_cmd=x11vnc # or use full path (or set PATH).
+pwfile=/path/to/vnc/passwd # always use a password
+display=:0 # display of interest
+restart_sleep=5 # pause between X server restarts.
+
+# modify cmdline args if desired:
+x11vnc_args="-display $display -rfbauth $pwfile -forever -nap"
+
+# you may need to customize the "grep", etc, below in get_xauthority_file()
+##########################################################################
+
+if [ "X$1" != "X" ]; then
+ max=$1
+ shift
+fi
+
+get_xauthority_file() {
+ #
+ # We need to find the MIT-COOKIE file... this not portable at all,
+ # depends on OS, distro, desktop, phase of moon, etc...
+ #
+ # If the cookie file was fixed and you knew it, you could just
+ # return it here e.g.:
+ #
+ ## echo "/var/gdm/:0.Xauth"; return
+ #
+ # or, if you knew the directory, you could look for the youngest
+ # file there and return it e.g.:
+ #
+ ## echo `ls -t /var/lib/xdm/authdir/authfiles/* | head -1`; return
+
+ # this hack tries to grep it out of ps output...
+ xauth=""
+ for i in 1 2 3
+ do
+ # very linux specific, and you likely need to tweak..
+ patt="X11R6.*/X.*-auth"
+ xauth=`ps wwwaux | grep "$patt" \
+ | egrep -v 'grep|Xprt' | head -1 \
+ | sed -e 's/^.*-auth//' | awk '{print $1}'`
+
+ if [ "X$xauth" != "X" ]; then
+ break
+ fi
+ sleep 2 # wait a bit in case X server is restarting slowly.
+ done
+ echo $xauth
+}
+
+try=1
+while [ 1 ]
+do
+ echo "`date` $0 try number: $try"; try=`expr $try + 1`
+
+ auth=`get_xauthority_file`
+ if [ ! -r "$auth" ]; then
+ echo "`date` bad auth file: \"$auth\""
+ else
+ cmd="$x11vnc_cmd $x11vnc_args"
+ sleep 1
+ echo "`date` running: $cmd -auth $auth"
+ # run x11vnc:
+ $cmd -auth $auth
+ if [ "X$max" = "Xonce" ]; then
+ exit $?
+ fi
+ fi
+ if echo "$max" | grep '[0-9]' > /dev/null; then
+ if [ $try -gt $max ]; then
+ exit
+ fi
+ fi
+ sleep $restart_sleep
+done