diff --git a/chatterino_process_monitor.py b/chatterino_process_monitor.py new file mode 100644 index 0000000..9f4db49 --- /dev/null +++ b/chatterino_process_monitor.py @@ -0,0 +1,56 @@ +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 diff --git a/icon.png b/icon.png new file mode 100644 index 0000000..b51d5ae Binary files /dev/null and b/icon.png differ