diff --git a/pytwmn.py b/pytwmn.py new file mode 100755 index 0000000..6b2d774 --- /dev/null +++ b/pytwmn.py @@ -0,0 +1,76 @@ +import os, socket + +class TwmnError(Exception): + UNWN_ERR = -1 + NO_TWMND = -2 + NO_CONF = -3 + def __init__(self, code): + self.code = code + def __str__(self): + if self.code == TwmnError.NO_TWMND: + return "Unable to connect to twmnd" + elif self.code == TwmnError.NO_CONF: + return "Could not find twmn configuration file" + else: + return "Unknown twmn error" + + +def confExists(): + try: + from xdg import BaseDirectory + return os.path.join(BaseDirectory.xdg_config_home,"twmn/twmn.conf") + except: + return False + +def init(host="127.0.0.1", port=None): + if not port: + port = 9797 + try: + fn = confExists() + if not fn: + return False + with open(fn) as f: + for line in f.readlines(): + if line.startswith("port=") and \ + line[5:-1].isdigit(): + port = int(line[5:-1]) + break + except IOError: + raise TwmnError(TwmnError.NO_CONF) + if type(port) == type(str()): + port = int(port) + global s + s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) + s.connect((host, port)) + +class Notification(object): + def __init__(self, title="", msg="", icon=""): + self.title = str(title) + self.msg = str(msg) + if icon.startswith("file://"): + icon = icon[7:] + self.icon = icon + self.time = None + + def set_duration(self, time): + self.time = time + + def show(self): + try: + if self.time is None: + s.send("" + self.title + "" + "" + self.msg + "" + "" + self.icon + "") + else: + s.send("" + self.title + "" + "" + self.msg + "" + "" + self.icon + "" + "" + str(self.time) + "") + except: + raise TwmnError(TwmnError.NO_TWMND) + +if __name__ == "__main__": + init() + n = Notification("PyTwmn", "This is a notification!") + n.set_duration(1000) + n.show()