Add 'dots/' from commit 'f64b634dd8fbb2c8a2898c3b9d0acc9452e4d966'

git-subtree-dir: dots
git-subtree-mainline: 2ad98cde17
git-subtree-split: f64b634dd8
This commit is contained in:
2025-10-04 18:28:04 +02:00
232 changed files with 11175 additions and 0 deletions

82
dots/.bin/pomo Executable file
View File

@@ -0,0 +1,82 @@
#!/usr/bin/env python3
# vim: set filetype=python:
"""
Pomodoro timer
- Writes pomodoro timer to temporary file so statusbar can read it
- Notification on session finish
- Notification on break finish
"""
import os
import atexit
from argparse import ArgumentParser
from time import sleep
from plyer import notification
@atexit.register
def clear():
if os.path.exists('/home/h/.local/share/pomo'):
os.remove('/home/h/.local/share/pomo')
def format_mins_secs(mins, secs):
return f"{mins:02d}:{secs:02d}"
def make_countdown():
def countdown(duration):
while duration != 0:
mins = duration // 60
secs = duration % 60
time_str = format_mins_secs(mins, secs)
os.system(f'echo -n "{time_str}" > /home/h/.local/share/pomo')
sleep(1)
duration -= 1
return countdown
def main(args):
prep_duration = args.prep_duration * 60
work_duration = args.work_duration * 60
break_duration = args.break_duration * 60
repeats = args.repeats
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
def handle_signal(signal, frame):
# Wait for clear to finish
clear()
print('Exiting')
exit(0)
if __name__ == '__main__':
parser = ArgumentParser()
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)
parser.add_argument('-c', '--clear', action='store_true',
help='Clear timer')
args = parser.parse_args()
main(args)