83 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
			
		
		
	
	
			83 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
#!/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 "/${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
 | 
						|
	command task add "${TASK_NAME}"
 | 
						|
	printf '%b' "Task '${TASK_NAME}' created.\n"
 | 
						|
	TASK_ID=$(task description.is:"${TASK_NAME}" ids)
 | 
						|
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
 |