--- trunk/webthumb 2004/07/26 13:28:53 2 +++ trunk/webthumb 2008/02/06 19:48:56 60 @@ -35,12 +35,13 @@ # some configurable paths BROWSER=mozilla-firefox -XSERVER=vncserver +XSERVER=Xvfb XWIT=xwit URL=$1 FILE=${2:-screenshot.jpg} FRAMESET="`mktemp`.html" +PROFILE_DIR=`mktemp -d` PORT=8888 if [ -z "$URL" ] ; then @@ -49,7 +50,12 @@ fi if [ -z "`which $XWIT`" ] ; then - echo "$0 really need xwit to operate. please install it." + echo "$0 really need $XWIT to operate. please install it." + exit 1 +fi + +if [ -z "`which $XSERVER`" ] ; then + echo "$0 really need $XSERVER to operate. please install it." exit 1 fi @@ -61,16 +67,24 @@ exit 1 fi -echo "starting vnc X server" +echo "starting X server $XSERVER" + +export DISPLAY=:42 -export DISPLAY=`$XSERVER -geometry ${W}x${H} -depth 24 2>&1 \ - | grep : | head -1 | cut -d: -f2 | sed 's/^/:/'` +$XSERVER -ac -screen 0 ${W}x${H}x24 $DISPLAY & +# debug server +#Xnest -display :0 -ac -geometry ${W}x${H} -depth 24 $DISPLAY & -function kill_vnc() { - vncserver -kill $DISPLAY +XSERVER_PID=$! +echo "using pid $xserver_pid for X server" + +function kill_x_server() { + kill $BROWSER_PID + kill $XSERVER_PID rm -f $FRAMESET + rm -fr $PROFILE_DIR } -trap 'echo "QUIT!" >&2; kill_vnc; exit 1' INT QUIT TERM SEGV +trap 'echo "QUIT!" >&2; kill_x_server; exit 1' INT QUIT TERM SEGV # create frameset to load site and after site is loaded trigger this script cat > $FRAMESET <&1 >/dev/null & +$BROWSER -P Screenshot -width $W -height $H $FRAMESET & +BROWSER_PID=$! echo "staring web server (wait for page to load)" @@ -102,8 +117,7 @@ echo -e "HTTP/1.0 304 Not modified\r\n\r\n" | nc -l -w 60 -p $PORT >/dev/null # get Mozilla Firefox window id (for resize) - -WINDOW_ID=`xwininfo -display $DISPLAY -name "Mozilla Firefox" | grep "Window id:" | cut -d" " -f4` +WINDOW_ID=`xwininfo -display $DISPLAY -root -tree | grep gecko | cut -d\" -f1 | sort -n | head -1` if [ -z "$WINDOW_ID" ] ; then echo "can't find window with name 'Mozilla Firefox'" @@ -138,7 +152,8 @@ if [ ! -z "$RESIZE" ] ; then RESIZE="-geometry $RESIZE" fi + import -window $DUMP_ID $RESIZE $FILE -kill_vnc +kill_x_server