openscad/tests/virtualfb.sh

65 lines
1.2 KiB
Bash
Executable File

#!/bin/sh
# Toggle the Virtual Framebuffer
# If started, stop. If stopped, start.
start()
{
if [ "`command -v Xvfb`" ]; then
VFB_BINARY=Xvfb
fi
if [ "`command -v Xvnc`" ]; then
VFB_BINARY=Xvnc
fi
if [ ! $VFB_BINARY ]; then
echo "$0 Failed, cannot find Xvfb or Xvnc"
exit 1
fi
VFB_DISPLAY=`echo | awk 'BEGIN{srand();} {printf ":%.0f", rand()*1000+100};'`
$VFB_BINARY $VFB_DISPLAY -screen 0 800x600x24 &> ./virtualfb.log &
VFB_PID=$!
echo $VFB_DISPLAY > ./virtualfb.DISPLAY
echo $VFB_PID > ./virtualfb.PID
echo "Started virtual fb, PID=$VFB_PID , DISPLAY=$VFB_DISPLAY"
sleep 1
}
stop()
{
VFB_PID=`cat ./virtualfb.PID`
VFB_DISPLAY=`cat ./virtualfb.DISPLAY`
echo "Stopping virtual fb, PID was $VFB_PID, DISPLAY was $VFB_DISPLAY"
kill $VFB_PID
LOCKFILE=`echo "/tmp/.X"$VFB_DISPLAY"-lock"`
if [ -e $LOCKFILE ]; then
rm $LOCKFILE
fi
rm ./virtualfb.PID
rm ./virtualfb.DISPLAY
}
isrunning()
{
isrunning_result=
if [ -e ./virtualfb.PID ]; then
VFB_PID=`cat ./virtualfb.PID`
if [ "`ps cax | awk ' { print $1 } ' | grep ^$VFB_PID\$`" ]; then
isrunning_result=1
fi
fi
}
isrunning
if [ $isrunning_result ]; then
stop
else
start
fi