From be8ed4163e3a954985700623716ef53dd6b2a1b1 Mon Sep 17 00:00:00 2001 From: Gardouille Date: Mon, 16 Jan 2017 16:46:23 +0100 Subject: [PATCH] Add pomodorrior. --- README.md | 11 ++++++++ pomodorrior | 80 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 91 insertions(+) create mode 100755 pomodorrior diff --git a/README.md b/README.md index 0ec53d9..6c2c321 100644 --- a/README.md +++ b/README.md @@ -12,6 +12,7 @@ Some useful scripts (for me) that can be added to $PATH :) * flac_to_mp3: convert all flac files of a directory into mp3. * launch_thyme : Launch Thyme - apps tracker. * num_circle: Transform a number into a digit with a circle. +* pomodorrior : A tiny pomodoro's timer for Taskwarrior. * pomodoro: Print a task and a timer in a file. Try to apply Pomodoro Technique! * snapsend.sh: Send a ZFS snapshot to a remote host. * tag_photo.sh : Add an exif tag to images. @@ -72,6 +73,16 @@ num_circle 18 ⑱ ``` +### Pomodorrior +A tiny timer to use the Pomodoro technique with Taskwarrior. + +The script will : + * Create the task if it doesn't exists. + * Start the task for 25 minutes (default time). + * Start a break time for 5 minutes (default time). + +All informations will be printed in the Taskwarrior's directory : **${HOME}/.task/.current.task** so you can then parse and print the content of this file into your systray, tmux's statusbar,… + ### Pomodoro My implementation of the Pomodoro Technique (https://en.wikipedia.org/wiki/Pomodoro_Technique). diff --git a/pomodorrior b/pomodorrior new file mode 100755 index 0000000..2108993 --- /dev/null +++ b/pomodorrior @@ -0,0 +1,80 @@ +#!/bin/sh + +# A small Pomodoro's timer for Taskwarrior. + +## Vars +TIME=0 +# Work on a task (default: 25 min) +WORK_TIME=25 +# Take a small break +SHORT_BREAK_TIME=5 + +# Taskwarrior path +TASKWARRIOR_PATH="${HOME}/.task" +# Current task path +TASK_NAME="${1}" +TASK_PATH="${TASKWARRIOR_PATH}/.current.task" +TASK_ID=$(task description.is:"${TASK_NAME}" ids) + +# --------- Dependancies ---------- + +# Verify Taskwarrior is installed +if ! command -v task > /dev/null; then + printf '%b' "Please install Taskwarrior.\n" + exit 1 +fi + +# Verify Taskwarrior is initialized +if [ ! -d "${TASKWARRIOR_PATH}" ]; then + printf '%b' "Please initialize Taskwarrior.\n" + exit 1 +fi + + +# ------------- START ------------- + +# If the task doesn't already exists +if [ ! "${TASK_ID}" ]; then + printf '%b' "${TASK_NAME} don't exist, create it.\n" +fi + +## Working on the task +# Start the task +command task start "${TASK_ID}" +printf '%b' "${TASK_NAME} started.\n" + +printf '%b' "${TASK_NAME}\n${TIME}" > "${TASK_PATH}" + +# Tiny timer for ${WORK_TIME} minutes +while [ "${TIME}" != "${WORK_TIME}" ]; do + sleep 60 + TIME=$((TIME+1)) + printf '%b' "${TASK_NAME}\n${TIME}" > "${TASK_PATH}" +done + +# Stop the task +command task stop "${TASK_ID}" +printf '%b' "${TASK_NAME} stopped.\n" + +## Break time +# Toggle the sound +amixer -q set Master toggle + +BREAK_MSG="Pause" +BREAK_TIME="${SHORT_BREAK_TIME}" + +printf '%b' "${BREAK_MSG}\n${BREAK_TIME}" > "${TASK_PATH}" + +while [ "${BREAK_TIME}" -gt 0 ]; do + sleep 60 + BREAK_TIME=$((BREAK_TIME-1)) + printf '%b' "${BREAK_MSG}\n${BREAK_TIME}" > "${TASK_PATH}" +done + +# Toggle the sound +amixer -q set Master toggle + +# Delete the task file +rm -f "${TASK_PATH}" + +exit 0