view progs_all.py @ 3:3d7fc94a404a

a few more inputs; daemonize
author drewp@bigasterisk.com
date Wed, 08 Mar 2023 10:57:11 -0800
parents
children
line wrap: on
line source

import psutil
from typing import Dict, List, Optional


def progname(cmdline: List[str]) -> Optional[str]:
    if len(cmdline) < 1:
        return None
    if cmdline[-1].endswith('/steam'):
        return 'steam'
    if cmdline[0].endswith('/minecraft-launcher'):
        return 'minecraft-launcher'
    if cmdline[0].endswith('/java') and '--versionType' in cmdline:
        return 'minecraft'
    if cmdline[0].endswith('/RobloxPlayer'):
        return 'roblox'


def get_running_progs() -> Dict[str, int]:
    progs = set()
    for proc in psutil.process_iter(['pid', 'name']):
        try:
            prog = progname(proc.cmdline())
            if prog:
                progs.add(prog)
        except (psutil.AccessDenied, psutil.NoSuchProcess):
            pass
    return dict(
        (p, p in progs)
        for p in ['steam', 'minecraft-launcher', 'minecraft', 'roblox'])