Aqui está uma solução alternativa que poderia funcionar, dependendo da sua implementação do X11 e, possivelmente, da sua plataforma.
No Linux com o Xorg, você obterá um arquivo (socket na verdade) abaixo de /tmp/.X11-unix
para cada exibição disponível no localhost. por exemplo. Eu tenho um Xvfb em :2
e um X normal em :0
e eu recebo:
$ ls -l /tmp/.X11-unix
total 0
srwxrwxrwx 1 root root 0 Oct 4 09:06 X0
srwxrwxrwx 1 root root 0 Oct 4 11:37 X2
Então, em vez de tentar iniciar seu Xvfb
s cegamente, verifique se a exibição está disponível com:
if ( -e /tmp/.X11-unix/X$DISP ) then
...
endif
Você pode usar um loop para encontrar o primeiro número de exibição disponível.
É um pouco atrevido, mas deve funcionar na maioria das circunstâncias. Não tenho certeza se isso funciona (ou se existem soluções alternativas semelhantes) em outros sistemas operacionais.