#!/bin/env python3
# Egg timer
# 2020-02-08
# OM
from tkinter import *
from tkinter import messagebox
from tkinter import Canvas
import argparse
import time
import shutil
import notify2
root = Tk()
def message(m, s):
screen_width = root.winfo_screenwidth()
screen_height = root.winfo_screenheight()
msg = 'ALARM, Timer ran ' + str(m) + 'm and ' + str(s) + ' s'
notify_msg = notify2.Notification('ALARM', msg)
notify_msg.show()
if screen_width <= 0:
screen_width = 1024
if screen_height <= 0:
screen_height = 768
c = Canvas(root, bg = "darkred", \
width = screen_width, height = screen_height)
c.pack()
messagebox.showwarning(msg)
#root.mainloop()
def main():
argparser = argparse.ArgumentParser()
argparser.add_argument(
'-s',
help='seconds',
type=int,
nargs=1
)
argparser.add_argument(
'-m',
help='minutes',
type=int,
nargs=1
)
args = argparser.parse_args()
if not args.s and not args.m:
argparser.print_help()
time_s = 0
time_m = 0
if args.s:
time_s = abs(args.s[0])
if args.m:
time_m = abs(args.m[0])
if args.s or args.m:
notify2.init('timebomb')
sleep(m=time_m, s=time_s)
message(m=time_m, s=time_s)
def sleep(m, s):
time_sum_s = (m * 60) + s
time_m, time_s = divmod(time_sum_s, 60)
print('Start: ' + time.ctime())
print('Sleeping for: ' + str(time_m) \
+ ' mins and ' + str(time_s) + ' seconds')
for x in range(time_sum_s):
# because dynamic resizing this needs to be here
cols, rows = shutil.get_terminal_size(fallback=(80, 24))
pr_m, pr_s = divmod(x, 60)
left = ' {:02d}:{:02d} '.format(pr_m, pr_s)
right = ' {:02d}:{:02d} '.format(time_m, time_s)
pbar_len = cols - len(left) - len(right)
if pbar_len < 20:
pbar_len = 20
progress = int(x/(time_sum_s-1) * pbar_len)
print(left, end='')
print('#' * progress + '_' * int(pbar_len-progress), end='')
print(right, end='\r')
time.sleep(1)
if __name__ == '__main__':
main()