72 lines
1.8 KiB
Python
72 lines
1.8 KiB
Python
"""Start xvfb from Python."""
|
|
|
|
from __future__ import annotations
|
|
|
|
import os
|
|
import time
|
|
import warnings
|
|
|
|
from pyvista.core.errors import PyVistaDeprecationWarning
|
|
|
|
XVFB_INSTALL_NOTES = """Please install Xvfb with:
|
|
|
|
Debian
|
|
$ sudo apt install libgl1-mesa-glx xvfb
|
|
|
|
CentOS / RHL
|
|
$ sudo yum install libgl1-mesa-glx xvfb
|
|
|
|
"""
|
|
|
|
|
|
def start_xvfb(wait=3, window_size=None):
|
|
"""Start the virtual framebuffer Xvfb.
|
|
|
|
Parameters
|
|
----------
|
|
wait : float, optional
|
|
Time to wait for the virtual framebuffer to start. Set to 0
|
|
to disable wait.
|
|
|
|
window_size : list, optional
|
|
Window size of the virtual frame buffer. Defaults to
|
|
:attr:`pyvista.global_theme.window_size
|
|
<pyvista.plotting.themes.Theme.window_size>`.
|
|
|
|
Notes
|
|
-----
|
|
Only available on Linux. Be sure to install ``xvfb``
|
|
and ``libgl1-mesa-glx`` in your package manager.
|
|
|
|
Examples
|
|
--------
|
|
>>> import pyvista as pv
|
|
>>> pv.start_xvfb() # doctest:+SKIP
|
|
|
|
"""
|
|
# Deprecated on 0.45.0, estimated removal on 0.48.0
|
|
warnings.warn(
|
|
'This function is deprecated and will be removed in future version of '
|
|
'PyVista. Use vtk-osmesa instead.',
|
|
PyVistaDeprecationWarning,
|
|
)
|
|
|
|
from pyvista import global_theme # noqa: PLC0415
|
|
|
|
if os.name != 'posix':
|
|
msg = '`start_xvfb` is only supported on Linux'
|
|
raise OSError(msg)
|
|
|
|
if os.system('which Xvfb > /dev/null'):
|
|
raise OSError(XVFB_INSTALL_NOTES)
|
|
|
|
# use current default window size
|
|
if window_size is None:
|
|
window_size = global_theme.window_size
|
|
window_size_parm = f'{window_size[0]:d}x{window_size[1]:d}x24'
|
|
display_num = ':99'
|
|
os.system(f'Xvfb {display_num} -screen 0 {window_size_parm} > /dev/null 2>&1 &')
|
|
os.environ['DISPLAY'] = display_num
|
|
if wait:
|
|
time.sleep(wait)
|