mirror of https://github.com/vitalif/openscad
65 lines
1.2 KiB
Bash
Executable File
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
|
|
|