diff --git a/eyewatch.py b/eyewatch.py new file mode 100755 index 0000000..2d25cd7 --- /dev/null +++ b/eyewatch.py @@ -0,0 +1,69 @@ +#!/usr/bin/env python3 +from argparse import ArgumentParser +from random import randint +from sys import argv +from time import sleep +import gi +gi.require_version('Notify', '0.7') +from gi.repository import Notify + +URGENCY = 0 +TITLE = 'EYE WATCH' +MESSAGES = ( + 'do some blinking', + 'roll your eyes a few times', + 'look at a distant object', + 'close your eyes tightly for a few seconds', + 'move your eyes sideways' +) + +def parse_args(sys_args): + desc = 'display a reminder to take a short break and do some eye practice' + p = ArgumentParser(description=desc) + p.add_argument( + '-t', + '--timer', + default='300', + help='run in foreground, showing notification every TIMER seconds (this is default, with TIMER = 300)' + ) + p.add_argument( + '-o', + '--once', + action='store_true', + default=False, + help='show notification once and exit' + ) + p.add_argument( + '-i', + '--icon', + help='show ICON alongside the message' + ) + return p.parse_args(sys_args) + +def get_random_message(message_list): + list_len = len(message_list) + random_value = randint(0, list_len - 1) + return message_list[random_value] + +def show_notification(notification, icon): + text = get_random_message(MESSAGES) + if icon is not None: + notification.update(TITLE, text, icon) + else: + notification.update(TITLE, text) + notification.set_urgency(URGENCY) + notification.show() + +if __name__ == '__main__': + args = parse_args(argv[1:]) + Notify.init(argv[0]) + notification = Notify.Notification.new(summary=TITLE) + + if args.once == True: + show_notification(notification, args.icon) + else: + while True: + show_notification(notification, args.icon) + sleep(int(args.timer)) + + Notify.uninit()