45 lines
1.1 KiB
Python
Executable File
45 lines
1.1 KiB
Python
Executable File
#!/usr/bin/env python3
|
|
from time import sleep
|
|
from sys import argv
|
|
from os import system
|
|
from subprocess import run
|
|
|
|
def speak(text: str, volume=100, word_gap=20):
|
|
system(f'espeak -a {volume} -g {word_gap} -k 20 "{text}"')
|
|
|
|
def alert(text:str):
|
|
run(["notify-send", "timer: " + text])
|
|
|
|
def beep(time):
|
|
system(f"play -q -n synth {time} sin 880")
|
|
|
|
if __name__ == '__main__':
|
|
work_duration = 50
|
|
if (len(argv) > 1):
|
|
work_duration = int(argv[1])
|
|
|
|
gap_duration = 10
|
|
if (len(argv) > 2):
|
|
gap_duration = int(argv[2])
|
|
|
|
beep(0.1)
|
|
alert(f"Starting timer with work={work_duration}, gap={gap_duration}")
|
|
|
|
for i in range(1, work_duration + 1):
|
|
sleep(60)
|
|
if i == 0:
|
|
alert(f"Work time has finished")
|
|
elif i % 10 == 0:
|
|
alert(f"{work_duration - i} minutes of study time left")
|
|
|
|
beep(1)
|
|
alert("You can take a break now!")
|
|
for i in range(1, gap_duration + 1):
|
|
sleep(60)
|
|
if i == 0:
|
|
alert(f"Gap time has finished")
|
|
beep(1)
|
|
elif i % 10 == 0:
|
|
alert(f"{gap_duration - i} minutes of gap time left")
|
|
beep(1)
|