69 lines
1.8 KiB
Python
Executable file
69 lines
1.8 KiB
Python
Executable file
#!/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()
|