Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

An asynchronous python wrapper for xvfb. Allowing for running multiple virtual X sever simultanously.

Installation and system requirements

Installing from git:

pip install git+https://github.com/zidokobik/pyxvfb.git

This package requires xvfb and xdpyinfo on your system. On Debian you can install by:

apt-get install xvfb xdpyinfo

Usage

The XSession class is used to start a virtual X server on a random display (e.g :12323). Its .acquire_display() method will lock and set the DISPLAY environment variable to that value. They should both be used as async context managers.

from pyxvfb import XSession
...
async with XSession() as xvfb_session:
	async with xvfb_session.acquire_display():
		# This will exclusively acquire the DISPLAY environment
		# variable and set its value to the session.
		# You should launch your X program here.
		firefox = await playwright.firefox.launch(headless=False)
	# Then exit `.acquire_display()` when no longer need the DISPLAY
	# environment variable, allowing for other sessions to use.
	page = await firefox.new_page()
	...

Tips

Some software (GTK+,...) allows the --display option which specify the display to use. You can take advantage of this and launch the application directly without having to wait for .acquire_display(). Example:

...
async with XSession() as xvfb_session:
	subprocess.run(['google-chrome', '--display', f':{xvfb_session.display}'])
...

About

An asynchronous python wrapper for xvfb. Allowing for running multiple virtual X sever simultanously.

Topics

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages