diff --git a/lib/client/dashboard_window.py b/lib/client/dashboard_window.py index 68fa5ca..437771e 100644 --- a/lib/client/dashboard_window.py +++ b/lib/client/dashboard_window.py @@ -10,9 +10,8 @@ from tkinter import ttk, messagebox from PIL import Image, ImageTk from lib.client.new_job_window import NewJobWindow from lib.server.server_proxy import RenderServerProxy - -sys.path.append("../") from lib.server.zeroconf_server import ZeroconfServer +from lib.utilities.misc_helper import launch_url logger = logging.getLogger() @@ -210,11 +209,11 @@ class DashboardWindow: def reveal_in_finder(self): job = next((d for d in self.job_cache if d.get('id') == self.selected_job_id()), None) output_dir = os.path.dirname(job['output_path']) - subprocess.run(['open', output_dir]) + launch_url(output_dir) def open_logs(self): url = f'http://{self.server_proxy.hostname}:{self.server_proxy.port}/api/job/{self.selected_job_id()}/logs' - subprocess.run(['open', url]) + launch_url(url) def mainloop(self): self.root.mainloop() diff --git a/lib/utilities/misc_helper.py b/lib/utilities/misc_helper.py new file mode 100644 index 0000000..904c754 --- /dev/null +++ b/lib/utilities/misc_helper.py @@ -0,0 +1,15 @@ +import logging +import subprocess + +logger = logging.getLogger() + + +def launch_url(url): + if subprocess.check_output(['which', 'open']): + subprocess.run(['open', url]) # macos + elif subprocess.check_output(['which', 'xdg-open']): + subprocess.run(['xdg-open', url]) # linux + elif subprocess.check_output(['which', 'start']): + subprocess.run(['start', url]) # windows - need to validate this works + else: + logger.error(f"No valid launchers found to launch url: {url}") \ No newline at end of file