#TODO #tasks #planner

app notnow

A terminal based task and TODO management software

11 releases

✓ Uses Rust 2018 edition

new 0.2.3 Mar 27, 2020
0.2.1 Oct 13, 2019
0.2.0 Mar 31, 2019
0.1.5 Dec 27, 2018
0.1.4 Nov 4, 2018

#3 in Text editors

Download history 34/week @ 2019-12-10 9/week @ 2019-12-24 155/week @ 2020-01-07 54/week @ 2020-01-14 9/week @ 2020-01-21 1/week @ 2020-01-28 2/week @ 2020-02-04 14/week @ 2020-02-11 13/week @ 2020-02-18 49/week @ 2020-02-25 21/week @ 2020-03-03 32/week @ 2020-03-17 47/week @ 2020-03-24

126 downloads per month


5.5K SLoC

pipeline coverage crates.io rustc


notnow is a terminal based TODO management program (that's right, yet another). It uses JSON for plain-text storage of a TODO database and is conceived in the Rust programming language.

Two of its overarching goals are to allow for tag based filtering of tasks, along with fully user-definable tags and queries, and to support server based synchronization of tasks using the CalDAV protocol as specified by RFC 4791. While filtering based on tags is already implemented, not all aspects of it are available through the UI. CalDAV support has not yet found its way into the program.

The program also acts as the first play ground for the gui crate, which explores the design space of UI applications using Rust.


The program stores its configuration below $XDG_CONFIG_HOME/notnow (which most commonly defaults to ~/.config/notnow). Configuration is two-fold:

  • notnow.json is a JSON file storing basic program state
  • task.json is a JSON file storing the user's tasks

Being terminal based, notnow is controlled through its UI as opposed to command line parameters. The program aims to mirror Vi style bindings where that is possible. The key bindings are as follows:

Key(s) Function
a Add a new task
e Edit selected task
d Delete selected task
j Move task selection down
k Move task selection up
J Move selected task down
K Move selected task up
g Select first task on the current tab
G Select last task on the current tab
Space Toggle completion state of selected task
h Select tab to the left
l Select tab to the right
H Move tab to the left
L Move tab to the right
1-9 Select tab #x
0 Select last tab
` Select previous tab
/ Start task search forward
? Start task search backward
n Continue task search forward
N Continue task search backward
Return Accept text input
Esc Cancel text input
w Save tasks to file
q Quit program

In addition, when inputting text (e.g., when adding or editing a task), the backspace, delete, home, end, and left and right cursor keys have functions similar to those they carry most commonly.

The program has support for libreadline style task input, when built with the readline feature flag enabled. That is, when entering actual text (as opposed to just pressing a key to, say, selecting a different task), libreadline bindings will be honored.


notnow is in a well progressed development phase. A lot of the desired functionality exists, but not all is hooked up with the UI. More improvements are being worked on.


~39K SLoC