A tiny todoist CLI program. Takes simple input and dumps it in your inbox or another project. Takes advantage of natural language processing to assign due dates, tags, etc.
Will ask for your Todoist API token on the first run, and your data in JSON format in $XDG_CONFIG_HOME/tod.cfg
. This defaults to:
~/.config/tod.cfg
on Linux~/Library/Application Support/tod.cfg
on Mac- No idea about Windows, sorry!
# Linux and MacOS
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
Install Tod
cargo install tod
# Use yay or another AUR helper
yay tod-bin
Clone the project
git clone git@github.com:alanvardy/tod.git
cd tod
./test.sh # run the tests
cargo build --release
You can then find the binary in /target/release/
Start with the help flag to get the latest commands
> tod -h
A tiny unofficial Todoist client
Usage: tod [OPTIONS] [COMMAND]
Commands:
task
project
help Print this message or the help of the given subcommand(s)
Options:
-o, --config <CONFIGURATION PATH> Absolute path of configuration. Defaults to $XDG_CONFIG_HOME/tod.cfg
-q, --quickadd <quickadd>... Create a new task with natural language processing.
-h, --help Print help
-V, --version Print version
And also use it to dig into subcommands
> tod task -h
Usage: tod task <COMMAND>
Commands:
create Create a new task
list List all tasks in a project
next Get the next task by priority
complete Complete the last task fetched with the next command
help Print this message or the help of the given subcommand(s)
Options:
-h, --help Print help
-V, --version Print version
- Add your most commonly used projects, the project ID is the last series of numbers in the URL. If the project name includes spaces, wrap the project name with quotes.
- You can use natural language processing such as dates priority etc when sending to inbox, but not to the projects due to current limitations.
- Items are ranked by points and the first is returned:
- Item is overdue: 150
- The date is today with no time: 100
- The date is today with time in next or last 15 min: 200
- No date: 80
- Not recurring: 50
- Item has no priority: 2
- Priority 1: 1
- Priority 2: 3
- Priority 3: 4
# Quickly create a task
tod -q Buy more milk today
# Create a new task (you will be prompted for content and project)
tod task create
# Create a task in a project
tod task create --content "Write more rust" --project code
# Import your projects
tod project import
# Get the next task for a project
tod task next
# Go through tasks with an interactive prompt, completing them in order of importance one at a time.
tod project process
# Complete the last "next task" and get another
tod task complete && tod task next
# Get your work schedule
tod tasks list --scheduled --project work
# Get all tasks for work
tod tasks list --project work
Find the line in your tod.cfg
that reads "spinners": null
and change the value to false.
I am a developer who uses Todoist to reduce stress and cognitive overhead, by delegating things that a machine does well to a machine. This CLI application scratches some very specific itches for me, and I hope that it may be of use to others as well!
Some points around my general strategy:
- Do one thing at a time, multi-tasking is an illusion (see
tod project process
) - Capture all tasks immediately with the inbox and add detail later (see
tod project empty
,schedule
, andprioritize
) - Make all your tasks "actions", concrete tasks that can be acted on. Add phone numbers, hyperlinks etc to your tasks
- Batch process like things as infrequently as possible to lower context switching, i.e. clear your email inbox once per day, spam once per week.
- Remember that the objective is to get the important things done with less friction, not just get more things done.
- Further to the above point, make sure to leave yourself margin. It is in the spaces between the periouds work that we recover and get our best ideas.
- Less projects are better than more projects
- Use projects as "modes" where you only work in one at a time