From 791d930a554b189eca194eb1a0be88e0baf38995 Mon Sep 17 00:00:00 2001 From: Micah Lee Date: Thu, 13 Feb 2020 15:33:08 -0800 Subject: [PATCH] In Windows, add startupinfo to subprocess calls to prevent terminal windows from opening in the background --- dangerzone/common.py | 8 ++++++++ dangerzone/docker_installer.py | 15 ++++++++++++--- dangerzone/tasks.py | 1 + 3 files changed, 21 insertions(+), 3 deletions(-) diff --git a/dangerzone/common.py b/dangerzone/common.py index 95dc508..34327a8 100644 --- a/dangerzone/common.py +++ b/dangerzone/common.py @@ -341,3 +341,11 @@ class Common(object): pass return pdf_viewers + + def get_subprocess_startupinfo(self): + if platform.system() == "Windows": + startupinfo = subprocess.STARTUPINFO() + startupinfo.dwFlags |= subprocess.STARTF_USESHOWWINDOW + return startupinfo + else: + return None diff --git a/dangerzone/docker_installer.py b/dangerzone/docker_installer.py index 82db353..2f0efeb 100644 --- a/dangerzone/docker_installer.py +++ b/dangerzone/docker_installer.py @@ -28,7 +28,11 @@ def is_docker_installed(common): def is_docker_ready(common): # Run `docker ps` without an error try: - subprocess.run([common.container_runtime, "ps"], check=True) + subprocess.run( + [common.container_runtime, "ps"], + check=True, + startupinfo=common.get_subprocess_startupinfo(), + ) return True except subprocess.CalledProcessError: return False @@ -36,7 +40,9 @@ def is_docker_ready(common): def launch_docker_windows(): docker_desktop_path = "C:\\Program Files\\Docker\\Docker\\Docker Desktop.exe" - subprocess.Popen([docker_desktop_path]) + subprocess.Popen( + [docker_desktop_path], startupinfo=common.get_subprocess_startupinfo() + ) class DockerInstaller(QtWidgets.QDialog): @@ -278,7 +284,10 @@ class Installer(QtCore.QThread): elif platform.system() == "Windows": try: # Run the installer - subprocess.run([self.installer_filename]) + subprocess.run( + [self.installer_filename], + startupinfo=common.get_subprocess_startupinfo(), + ) self.install_finished.emit() except Exception as e: diff --git a/dangerzone/tasks.py b/dangerzone/tasks.py index 1b6f720..eb6f38c 100644 --- a/dangerzone/tasks.py +++ b/dangerzone/tasks.py @@ -31,6 +31,7 @@ class TaskBase(QtCore.QThread): stderr=subprocess.PIPE, bufsize=1, universal_newlines=True, + startupinfo=self.common.get_subprocess_startupinfo(), ) as p: if watch == "stdout": pipe = p.stdout