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 "chatterino.exe" in proc.name(): return True except (psutil.NoSuchProcess, psutil.AccessDenied, psutil.ZombieProcess): pass return False # Function to run Chatterino def run_program(program_path): os.startfile(program_path) # todo: switch over to subprocess # process = subprocess.Popen(program_path, cwd = program_path) # Function to display system tray icon def on_quit_callback(icon): icon.stop() # Define system tray icon and menu def create_tray_icon(): 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_path = "C:\\Program Files\\Chatterino7\\chatterino.exe" # 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