#TODO #tasks #planner

app notnow

A terminal based task and TODO management software

8 releases

✓ Uses Rust 2018 edition

0.2.0 Mar 31, 2019
0.1.5 Dec 27, 2018
0.1.4 Nov 4, 2018
0.1.3 Oct 21, 2018
0.0.0 Aug 10, 2018

#3 in Text editors

Download history 54/week @ 2018-12-18 13/week @ 2018-12-25 5/week @ 2019-01-01 19/week @ 2019-01-08 9/week @ 2019-01-15 4/week @ 2019-01-22 1/week @ 2019-01-29 1/week @ 2019-02-05 1/week @ 2019-02-12 3/week @ 2019-02-19 14/week @ 2019-02-26 8/week @ 2019-03-05 1/week @ 2019-03-12 3/week @ 2019-03-19 115/week @ 2019-03-26

60 downloads per month

GPL-3.0-or-later

213KB
5K SLoC

pipeline crates.io rustc

notnow

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.

Usage

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
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.

Status

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.

Dependencies

~2.5MB
~45K SLoC