diff --git a/main.py b/main.py index 48fb365..313b636 100644 --- a/main.py +++ b/main.py @@ -43,6 +43,18 @@ def cast_spell(): auto_stop_timer.start() logging.info(f"Scheduled auto-stop for VNC in {AUTO_STOP_TIMEOUT_SECONDS} seconds.") return f"Successfully cast to Thunder.", 200 + elif machine == "xtool": + logging.info("Casting to XTool.") + kill_vnc() # Kill any existing VNC session first + cast_xtool() + # Restart auto-stop timer + if auto_stop_timer is not None and auto_stop_timer.is_alive(): + auto_stop_timer.cancel() + logging.info("Cancelled previous auto-stop timer.") + auto_stop_timer = threading.Timer(AUTO_STOP_TIMEOUT_SECONDS, _auto_stop_vnc) + auto_stop_timer.start() + logging.info(f"Scheduled auto-stop for VNC in {AUTO_STOP_TIMEOUT_SECONDS} seconds.") + return f"Successfully cast to XTool.", 200 else: logging.warning(f"Invalid or missing machine parameter: {machine}") return f"Invalid or missing 'machine' parameter. Use 'trotec' or 'thunder'.", 400 @@ -97,6 +109,21 @@ def cast_thunder(): except Exception as e: # Catch other potential errors during Popen logging.error(f"An error occurred while launching VNC for Thunder with Popen: {e}") +def cast_xtool(): + """Executes the xtightvncviewer command for XTool.""" + command = "DISPLAY=:1 xtightvncviewer -viewonly -fullscreen 172.17.17.221" + try: + logging.info(f"Launching command: {command}") + # Use Popen to run the command in the background (non-blocking) + subprocess.Popen(command, shell=True) + logging.info(f"Command '{command}' launched successfully.") + except FileNotFoundError: + # This error is more likely if the shell itself (e.g., /bin/sh) is not found, + # or if 'xtightvncviewer' is not in PATH and the shell fails to find it. + logging.error(f"Failed to launch VNC for XTool: Shell or VNC command might not be found. Ensure xtightvncviewer is in PATH and shell is available.") + except Exception as e: # Catch other potential errors during Popen + logging.error(f"An error occurred while launching VNC for XTool with Popen: {e}") + def kill_vnc(): """Executes the killall command for xtightvncviewer.""" command = "killall xtightvncviewer"