import psutil import time import os import subprocess import pystray from PIL import Image # Function to check if Chatterino is running def is_chatterino_running(): for proc in psutil.process_iter(): try: if program_executable in proc.name(): return True except (psutil.NoSuchProcess, psutil.AccessDenied, psutil.ZombieProcess): pass return False # Function to run Chatterino def run_program(program_path): print("[DEBUG] " + "Dir: " + program_dir + " | " + program_path) subprocess.Popen([program_path], cwd=program_dir, shell=True) # Function to display system tray icon def on_quit_callback(icon): icon.stop() # Define system tray icon and menu def create_tray_icon(): # todo: fix tray icon not showing up icon_image = Image.open("icon.png") menu = pystray.Menu( pystray.MenuItem( "Quit", on_quit_callback, default=True ) ) return pystray.Icon("Chatterino Monitor", icon_image, "Chatterino Monitor", menu) if __name__ == '__main__': print("Yandols' Chatterino Process Monitor Script") # Set path to Chatterino program_dir = "C:\\Program Files\\Chatterino7" program_executable = "chatterino.exe" program_path = program_dir + "\\" + program_executable # Create system tray icon icon = create_tray_icon() # Loop to check if Chatterino is running every 10 minutes while True: if is_chatterino_running(): print("Chatterino is running. Rechecking in 10 minutes.") else: print("Chatterino is not running. Starting in 30 seconds...") time.sleep(30) run_program(program_path) time.sleep(1) # wait for system tray icon to initialize time.sleep(600) # wait 10 minutes