Merge pull request #1742 from fadlytabrani/patch-1

Add clipboard support for TigerVnc
This commit is contained in:
Jeremy Grossmann 2020-04-27 20:34:41 -07:00 committed by GitHub
commit 53b1809dc3
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -86,6 +86,7 @@ class DockerVM(BaseNode):
self._telnet_servers = [] self._telnet_servers = []
self._xvfb_process = None self._xvfb_process = None
self._vnc_process = None self._vnc_process = None
self._vncconfig_process = None
self._console_resolution = console_resolution self._console_resolution = console_resolution
self._console_http_path = console_http_path self._console_http_path = console_http_path
self._console_http_port = console_http_port self._console_http_port = console_http_port
@ -615,6 +616,11 @@ class DockerVM(BaseNode):
x11_socket = os.path.join("/tmp/.X11-unix/", "X{}".format(self._display)) x11_socket = os.path.join("/tmp/.X11-unix/", "X{}".format(self._display))
await wait_for_file_creation(x11_socket) await wait_for_file_creation(x11_socket)
# Start vncconfig for tigervnc clipboard support, connection available only after socket creation.
tigervncconfig_path = shutil.which("vncconfig")
if tigervnc_path and tigervncconfig_path:
self._vncconfig_process = await asyncio.create_subprocess_exec(tigervncconfig_path, "-display", ":{}".format(self._display), "-nowin")
# sometimes the VNC process can crash # sometimes the VNC process can crash
monitor_process(self._vnc_process, self._vnc_callback) monitor_process(self._vnc_process, self._vnc_callback)
@ -825,6 +831,12 @@ class DockerVM(BaseNode):
await self.stop() await self.stop()
if self.console_type == "vnc": if self.console_type == "vnc":
if self._vncconfig_process:
try:
self._vncconfig_process.terminate()
await self._vncconfig_process.wait()
except ProcessLookupError:
pass
if self._vnc_process: if self._vnc_process:
try: try:
self._vnc_process.terminate() self._vnc_process.terminate()