Source code for i3pystatus.runwatch

import glob
import os.path

from i3pystatus import IntervalModule


[docs]class RunWatch(IntervalModule): """ Expands the given path using glob to a pidfile and checks if the process ID found inside is valid (that is, if the process is running). You can use this to check if a specific application, such as a VPN client or your DHCP client is running. .. rubric:: Available formatters * {pid} * {name} """ format_up = "{name}" format_down = "{name}" color_up = "#00FF00" color_down = "#FF0000" settings = ( "format_up", "format_down", "color_up", "color_down", "path", "name", ) required = ("path", "name") @staticmethod def is_process_alive(pid): return os.path.exists("/proc/{pid}/".format(pid=pid)) def run(self): alive = False pid = 0 try: with open(glob.glob(self.path)[0], "r") as f: pid = int(f.read().strip()) alive = self.is_process_alive(pid) except Exception: pass if alive: fmt = self.format_up color = self.color_up else: fmt = self.format_down color = self.color_down self.output = { "full_text": fmt.format(name=self.name, pid=pid), "color": color, "instance": self.name }