Refactor 'pomo' script
							parent
							
								
									41568b9bc6
								
							
						
					
					
						commit
						07eec68706
					
				
							
								
								
									
										80
									
								
								.bin/pomo
								
								
								
								
							
							
						
						
									
										80
									
								
								.bin/pomo
								
								
								
								
							| 
						 | 
				
			
			@ -1,4 +1,5 @@
 | 
			
		|||
# /usr/bin/env python3
 | 
			
		||||
#!/usr/bin/env python3
 | 
			
		||||
# vim: set filetype=python:
 | 
			
		||||
"""
 | 
			
		||||
Pomodoro timer
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -18,51 +19,58 @@ def clear():
 | 
			
		|||
    os.system('echo -n "" > /tmp/pomo')
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
atexit.register(clear)
 | 
			
		||||
 | 
			
		||||
parser = ArgumentParser()
 | 
			
		||||
 | 
			
		||||
parser.add_argument('-p', '--prep-duration', type=int,
 | 
			
		||||
                    help='Pre session duration', default=0)
 | 
			
		||||
parser.add_argument('-w', '--work-duration', type=int,
 | 
			
		||||
                    help='Session duration', default=25)
 | 
			
		||||
parser.add_argument('-b', '--break-duration', type=int,
 | 
			
		||||
                    help='Break duration', default=5)
 | 
			
		||||
parser.add_argument('-r', '--repeats', type=int,
 | 
			
		||||
                    help='Numer of sessions', default=1)
 | 
			
		||||
 | 
			
		||||
args = parser.parse_args()
 | 
			
		||||
 | 
			
		||||
prep_duration = args.prep_duration * 60
 | 
			
		||||
work_duration = args.work_duration * 60
 | 
			
		||||
break_duration = args.break_duration * 60
 | 
			
		||||
repeats = args.repeats
 | 
			
		||||
def format_mins_secs(mins, secs):
 | 
			
		||||
    return f"{mins:02d}:{secs:02d}"
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def make_countdown(color="#000000"):
 | 
			
		||||
def make_countdown():
 | 
			
		||||
    def countdown(duration):
 | 
			
		||||
        while duration != 0:
 | 
			
		||||
            mins = duration // 60
 | 
			
		||||
            secs = duration % 60
 | 
			
		||||
            # os.system('echo -n "{:s} {:02d}:{:02d} \x01" > /tmp/pomo'.format(color, mins, secs))
 | 
			
		||||
            os.system(
 | 
			
		||||
                'echo -n "<fc={:s}> {:02d}:{:02d} </fc>" > /tmp/pomo'.format(color, mins, secs))
 | 
			
		||||
            time_str = format_mins_secs(mins, secs)
 | 
			
		||||
            os.system(f'echo -n "{time_str}" > /tmp/pomo')
 | 
			
		||||
            sleep(1)
 | 
			
		||||
            duration -= 1
 | 
			
		||||
    return countdown
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
prep_countdown = make_countdown("#0000aa")
 | 
			
		||||
work_countdown = make_countdown("#aa0000")
 | 
			
		||||
break_countdown = make_countdown("#00bb00")
 | 
			
		||||
def main(args):
 | 
			
		||||
    atexit.register(clear)
 | 
			
		||||
 | 
			
		||||
prep_countdown(prep_duration)
 | 
			
		||||
    prep_duration = args.prep_duration * 60
 | 
			
		||||
    work_duration = args.work_duration * 60
 | 
			
		||||
    break_duration = args.break_duration * 60
 | 
			
		||||
    repeats = args.repeats
 | 
			
		||||
 | 
			
		||||
while repeats != 0:
 | 
			
		||||
    notification.notify(title="Get started")
 | 
			
		||||
    work_countdown(work_duration)
 | 
			
		||||
    if break_duration != 0:
 | 
			
		||||
        notification.notify(title="Time for a break")
 | 
			
		||||
        break_countdown(break_duration)
 | 
			
		||||
        notification.notify(title="Break is over, back to work")
 | 
			
		||||
    repeats -= 1
 | 
			
		||||
    prep_countdown = make_countdown()
 | 
			
		||||
    work_countdown = make_countdown()
 | 
			
		||||
    break_countdown = make_countdown()
 | 
			
		||||
 | 
			
		||||
    prep_countdown(prep_duration)
 | 
			
		||||
 | 
			
		||||
    while repeats != 0:
 | 
			
		||||
        notification.notify(title="Get started")
 | 
			
		||||
        work_countdown(work_duration)
 | 
			
		||||
        if break_duration != 0:
 | 
			
		||||
            notification.notify(title="Time for a break")
 | 
			
		||||
            break_countdown(break_duration)
 | 
			
		||||
            notification.notify(title="Break is over, back to work")
 | 
			
		||||
        repeats -= 1
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
if __name__ == '__main__':
 | 
			
		||||
    parser = ArgumentParser()
 | 
			
		||||
 | 
			
		||||
    parser.add_argument('-p', '--prep-duration', type=int,
 | 
			
		||||
                        help='Pre session duration', default=0)
 | 
			
		||||
    parser.add_argument('-w', '--work-duration', type=int,
 | 
			
		||||
                        help='Session duration', default=25)
 | 
			
		||||
    parser.add_argument('-b', '--break-duration', type=int,
 | 
			
		||||
                        help='Break duration', default=5)
 | 
			
		||||
    parser.add_argument('-r', '--repeats', type=int,
 | 
			
		||||
                        help='Numer of sessions', default=1)
 | 
			
		||||
 | 
			
		||||
    args = parser.parse_args()
 | 
			
		||||
 | 
			
		||||
    main(args)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue