3 Task Theme


This is a simple theme (and scripts to show workflow) that is based on the stock TaskPaper3 default theme. I use taskA, B, & C as priorities. I use a focus tag when priorities haven’t changed but the day’s circumstances have grouped opportunities to accomplish tasks out of order. I use Daily for learning new habits, managing my personal time, etc. Daily things are not usually going to appear on my tasks lists. I color my WAIT tags and use a separate search to track them using things like, I left a message on this date or I sent an email to follow up or, this should be done according to someone’s statement in 30 days. WAIT is for anything that I took some action on, but it is not done yet.

I use Typinator to:

Change the search date     ";tpdate"  {YYYY}-{MM}-{DD}
To note sending an email   ";tpem"    (EM:  {h012}:{h012} {a} {YYYY}-{MM}-{DD}) 
To note Phone Contact      ";tppc"    (PC:  {h012}:{h012} {a} {YYYY}-{MM}-{DD}) 
To note leaving a message  ";tplm"    (LM:  {h012}:{h012} {a} {YYYY}-{MM}-{DD}) 

Search Strings:
(This goes in the TP3 document you are using)

Task A, B, & C @search(\(@taskA or @taskB or @taskC\) and not \(@search or @done\))
Task A @search(@taskA and not \(@search or @done\))
Task B @search(@taskB and not \(@search or @done\))
Task C @search(@taskC and not \(@search or @done\))
Waiting @search(@wait and not \(@search or @done\))
Done Today @search(\(2016-08-15\) and not search)

You have t keep the current search date modified to use the Done Today string. I use a Typinator expansion. It has been suggested that you can use a TP3 Date operator like “today” so that you never have to alter the date again. I have not been able to do it that way yet. Your mileage may vary.

Theme.less FIle:

// ---------------------------------------
// color purple:         rgb(100, 80, 184);
// color pink:           rgb(255, 80, 184);
// color red:            rgb(255, 50, 0);
// color green:          rgb(30, 100, 0);
// color blue:           rgb(42, 84, 165);
// color Med Gray:       rgb(115, 115, 115);
// color Dk Green:       rgb(50, 100, 50);
// ---------------------------------------

// Colors the text preceding the tag "@taskA" red.
item[data-taskA] {
  color: rgb(255, 50, 0);
// Colors the text preceding the tag "@taskB" purple.
item[data-taskB] {
  color: rgb(100, 80, 184);
// Colors the text preceding the tag "@taskC" green.
item[data-taskC] {
  color: rgb(50, 100, 0);
// Colors the actual tag "@wait" fushia.
run[tag=data-wait] {
  color: rgb(255, 80, 184);
// ---------------------------------------

// Changes the Project Title Font Size.
item[data-type=project] {
  font-size: 18;
  color: rgb(42, 84, 165);
// Colors the tag "@headder0" blue, size font.
item[data-headder0] {
  font-style: Bold;
  font-size: 22;
  color: rgb(42, 84, 165);
// Colors the tag "@headder1" blue, size font.
item[data-headder1] {
  font-style: Regular;
  font-size: 20;
  color: rgb(42, 84, 165);
// Colors the tag "@headder2" blue, size font.
item[data-headder2] {
  font-style: regular;
  font-size: 18;
  color: rgb(42, 84, 165);
// Colors the tag "@headder3" grey, size font.
item[data-headder3] {
  font-style: regular;
  font-size: 16;
  color: rgb(115, 115, 115);
// ---------------------------------------

// Colors the tag "@paragraph" black text, size font.
item[data-paragraph] {
  font-style: none;
  font-size: 16;
  color: rgb(0, 0, 0);
// Enlarges the text preceeding the tag "@focus".
item[data-focus] {
  font-style: Bold;
  font-size: 24;
// ---------------------------------------

// This occurs last to leave the archived done tags unaffected from earlier tags.
item[data-done] {
  color: rgb(100, 150, 50);
item[data-done] {
  > run[display] {
    text-strikethrough: NSUnderlineStyleSingle;
    text-strikethrough-  color: rgb(0, 0, 0);

How it Looks:

TaskPaper Extensions Wiki


Thanks. I didn’t see a spot for user submissions off the bat. Did I miss it?

Jessie said:

Use this wiki to link to posts about TaskPaper workflows, themes, and
scripts. If you have something to share please make a post and then link to it from this page to make it easy for others to find your post in the future.

But, all the scripts are listed in a well … list. I don’t see how to create a link to this post about my theme?


You can create a new post that explains your theme and how do you use it. Then just add a link to the wiki page. I am not sure if you can rename this post, but if you could, just add a link to this post.


if you’re having trouble posting code (or just for sharing code in general) it might be better to create a gist in github & link to it - it handles syntax coloring etc. so nicely.


I hear you, but that is what I was just saying, HOW do I do this? Looking over the wiki page again just now, WHERE is a button to add this page as a link? All I see is Jessie’s blurb that you can link to it and then a bunch of where people have already done this. I don’t see where to click to add a link to this page or any other.

Could be it’s there and I am just not seeing it (wouldn’t be the first time) but, I am still not seeing it.


you may need to hit a … button first for the edit button to appear


Thanks, I was looking under each section. It was an edit button way at the bottom. Very nice, now this page is linked, the page title changed, and that is that. Again, thanks.


You should give the date’s primer a look. I tried to explain working with dates and TaskPaper. You can just use the operator ‘today’ instead of using typinator to do that for you and change that every time you want to look for the day.

Here is the link,
A primer on using date in TaskPaper


Thank you, I have changed it in my OP. And thanks for the tip of the primer, though I still don’t quite understand how to use dates. Of course I understand the concepts and you have explained them quite well. What I do not understand is the context, where to use a date string, and how to make TP3 a meaningful calendar productivity replacement (or adjunct).

My example shows a mock up of what the screen looks like, what the search strings I use looks like (and the theme.less file). I would like to see a similar presentation as to how someone uses dates in a document. Not sure how to write a date in a TP3 note or task so that I can query it later.

Are these proper ways of using dates in my tasks in TP3?

  • TPS report due Sept 14 2016
  • Wash the Cat every Thursday repeating
  • Go to the hospital every Thursday repeating

Or should they be written more like this?

  • TPS report due 2016-09-15
  • Wash the Cat @due(this week +5 days)
  • Go to the hospital @due(this week +5 days)

How does one use a date in tracking something in TP3? I should mention that I have a terrible memory and trying to remember that I have a date to query might not work if I cant remember the date. That is why using the calendar now is working for me as I can scan visually. That is also why seeing visual example would be very useful to me.

Added: I tested by adding a date to something that said: “Steve called back and will try and set up a phone conference Monday morning 2016-08-15. @taskB @wait”. Then I typed in “today” in the search field. I did not see this string in the results. Apparently I am not yet understanding this.

Shucks, I spoke too soon. Changing that line of code with “today” instead of the date did not work. It found a string that had the word “today” in it.

Done Today @search(today and (@done)) (NO)
Done Today @search(‘today’ and (@done)) (NO)
Done Today @search(2016-08-15 and (@done)) (YES)


You need to tell TaskPaper that you are doing a date based search by adding [d] after the comparator in your search syntax. More info in user’s guide, but here’s a quick example:

@due <=[d] today
- this will match @due(2016-08-15)
- this will not match until next year @due(2017-08-15)


That is what I was trying to say I am confused about. Yes, I understand what that means. No, I don’t understand how that would apply in my example. Victor observed that I could substitute the “today” for the date I now use in:

How to turn this:

Done Today @search(\(2016-08-15\) and not search)
Done Today @search(2016-08-15 and  \(@done\))

In to this:

Done Today @search(\([d] today\) and not search) (Not working)
Done Today @search([d] today and  \(@done\)) (Not working)

Still very unclear about doing this and yes, I did read the primer.

ps: [quote=“jessegrosjean, post:12, topic:2272”] … after the comparator … [/quote] What’s a comparator? If you mean “and, not, or” then in this example, how would that work exactly? Serch is on the date which is then compared later in the equation with the parameter done.


Sorry made that up, in the user’s guide it’s called “Relations”


Relations are how one value compares to another value… for example … less then, greater than, etc. See the users guide link above for an exhaustive list of what’s supported.

What you compare two values, how you interpret those values matters a lot. For example if you have a @done(2017-08-15) tag and compare @done = today it will always return false. Because the default compare just compares “string” values and 2017-08-15 never equals today as a string value. On the other hand if you add the [d] modifier instead like this:

@done =[d] today

Then if todays date is 2017-08-15 they will be equal. That is because the [d] compares them as date values, not just strings.

So if you want to find things done today:

Done Today @search(@done =[d] today)


This last bit helps, I couldn’t understand the syntax for the statement. But, it still doesn’t answer what I was trying to do (I don’t think). My intention was in two parts 1) search for anything with a date of today’s date EXCLUDING anything already marked with a done tag and 2) search for anything that is marked with a done tag for today.

Testing your example to see if I am on the right track - using today without using done tag …

Testing Today @search([d] today)

That does not work. I wanted to show everything that has today’s date in it somewhere but EXCLUDING any done tags.

These work (thanks)

Done Today @search(@done =[d] today)
Due Today @search(2016-08-15 and not \(@search or @done\))


I recommend you to read the primer again. But this time read the recommended reading on the links at the beginning of the primer. I can help you, but it would be better for you to read it one more time. Then ask questions of what you don’t understand of the guide and primer; I will help you with the rest.

Testing Today @search([d] today)

That would not work. The tag is there to let the search engine know what you are looking for. Things due today? Before today? After today? (=<>). Putting dates inside tags are also helpful with organizing things. I usually use @due, @recurring, @bill, @calendar @event. I do this because then I can automatically update my calendar or events using those tags and a script I modified. It is found in the Wiki, but here is the link, Script to update Calendar and Events in OS X using Taskpaper tags

Now, you you want things due today and not done, use something like this,

@due = [d] today except @done

You will notice that it if the parent is marked as “@done”, but the task or project “@due” is not tagged with “@done”, that will still appear. If you read the documentation, you can find that “Item Paths” is what you need. So,

@due = [d] today except @done//*

Will show different results. Read the docs, and ask me some questions.