Task warrior has a lot of filtering options, but it’s faster to keep your ideas (or someday/maybes as they call them in Getting Things Done) completely separate. That way, you can see only the tasks you’re actually working on without cluttering up your task list wit the ideas you have for later projects. This is actually pretty easy to do by creating a separate configuration for taskwarrior and a few scripts to make things easy.
In a Nutshell
- Create a new config file and data directory for taskwarrior.
- Write a script to launch taskwarrior with the new config file and name the script idea
- Use idea for ideas and task for tasks.
- Write some scripts to convert ideas to tasks and tasks to ideas.
The New Config File
Just copy the original config file to a new location (~/.idearc, perhaps) and create a hidden directory for this new configuration (or profile) of taskwarrior. Update the new config file with the directory you want it to use. I use ~./ideas
Now all you have to do is use a simple bash script to launch taskwarrior with the new config file and whatever other arguments you pass it.
idea
#!/bin/bash
task rc:/home/username/.idearc "$@"
Congrats! Now you can use idea just like task, but everything gets stored in a separate profile, so none of these ideas will clutter up your normal task view.
Converting Ideas to Tasks
At some point, you’ll probably want to make at least one of these ideas a task that you can work on. Taskwarrior makes it easy to export and import tasks, but it’s quite a bit of typing. A little bash script can make this much easier.
idea2task
#!/bin/bash
echo "Copying Idea $@ to Task..."
idea $@ export | task import -
echo "Deleting Idea $@..."
idea $@ delete
task stats
NB: I used “$@” instead of “$1” because I’m pretty sure you can export several tasks at once using multiple filters. But that’s not something I’ve done yet. I’ve only exported and imported single tasks.
The last line, task stats
, just runs taskwarrior and asks it to display the stats. The only reason for this is that taskwarrior doesn’t seem to generate an id number for the new task until after you’ve run task again.
task2idea
And of course, you might have some tasks that you decide to put on the back-burner and convert to ideas.
#!/bin/bash
echo "Copying Task $@ to Idea..."
task $@ export | idea import -
echo "Deleting Task $@..."
task $@ delete
idea stats
Dependencies
I don’t know if the export/import process will keep task dependencies in tact or not; I haven’t tried testing that yet, but I’d say there’s a good chance it’ll work.
Background
I came across someone’s program for keeping track of ideas on github. It used a simple database, but lacked tagging, projects, etc. It was a nice idea, but adding other features seemed like a good idea.
Rather than re-invent the wheel, it seemed like getting taskwarrior to handle ideas for me would be a better idea. And thus, the idea behind this post was born.