My task manager using Shell scripts
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Milo Fultz 3e7e97a3cc Make delete `x` and delay `d` 5 days ago Make delete `x` and delay `d` 5 days ago Organize and fix helpers 2 weeks ago Make delete `x` and delay `d` 5 days ago


A simple pomodoro task manager in shell scripts.

A pomodoro is a 25 minute chunk of uninterrupted time, followed by a 5 minute break. If this is uninterrupted, it will add a pomodoro to the task. If interrupted, it will not add a pomodoro to the task.

This is a rewrite and devolution more or less of my Python task manager, Tod.

What it does

  • Manages tasks to do
  • Tracks how many pomodoros you have done using asterisks after the task name


Clone the repo somewhere that it can be referenced by your shell. In your shell's rc file, add an alias of tod=./path/to/ so you can use it wherever.


This uses SoX for the alarm, which can be installed using Homebrew on Mac.


Tod is used in the command line via whatever alias you created. For instance, if you set an alias to tod, then you would add a task with tod a "New task", start a pomodoro timer with tod 1, list all tasks with tod la, etc.


A task is a line of text with possible modifiers. The following are all allowed:

  • A normal task
  • d Delayed/deferred task
  • x Completed task
  • (A) High priority task!
  • Project task +projectname
  • x (C) A completed high priority project task +ford-prefect


  • x Completed task - An x represents completion.
  • (A) High priority task! - A set of parentheses with a single letter inside represents priority, A to Z representing highest to lowest.


  • Project task +projectname - A + followed by a name with no spaces.


Flag Arguments Description
n n: Task number Start pomodoro timer
N/A / ls List all uncompleted tasks
a "task"[ "another task" ...] task: New task Add new task
b Start break timer
c n[ n ...] n: Task number Mark task as complete/incomplete
d n[ n ...] Mark task as delayed
e Open .tod file for editing
k Kill timers
la List all tasks
lc / c List all completed tasks
lp List all priority tasks
ly / y List all delayed tasks
p "project" project: Project name List all tasks belonging to project
r Reduce/Remove all completed tasks from list
t See elapsed time for timer
x n[ n ...] n: Task number Delete task

Future Improvements

  • Move all initial variables and helper functions into "helper" shell script, a la C's h file.
  • Add due dates and organize by soonest
  • Log all tasks worked on/marked complete into a file automatically. Just copy the line into a log file once it has been edited, similar to bonzo.
  • Test suite for shell script? Sounds like a fun project.