An interactive terminal based todo.txt file editor with an interface similar to mutt
Project description
todotxt-machine is an interactive terminal based todo.txt file editor with an interface similar to mutt. It follows the todo.txt format and stores todo items in plain text.
In Action
Features
View your todos in a list with helpful syntax highlighting
Archive completed todos
Define your own colorschemes
Tab completion of contexts and projects
Filter contexts and projects
Search for the todos you want with fuzzy matching
Sort in ascending or descending order, or keep things unsorted
Clickable UI elements
Requirements
Python 2.7 or Python 3.4 on Linux or Mac OS X.
todotxt-machine 1.1.8 and earlier drew its user interface using only raw terminal escape sequences. While this was very educational it was difficult to extend with new features. Version 2 and up used urwid to draw its interface and is much more easily extendable.
Installation
Using pip
pip install todotxt-machine
Manually
Download or clone this repo and run the todotxt-machine.py script.
git clone https://github.com/AnthonyDiGirolamo/todotxt-machine.git cd todotxt-machine ./todotxt-machine.py
Command Line Options
todotxt-machine Usage: todotxt-machine todotxt-machine TODOFILE [DONEFILE] todotxt-machine [--config FILE] todotxt-machine (-h | --help) todotxt-machine --version Options: -c FILE --config=FILE Path to your todotxt-machine configuraton file [default: ~/.todotxt-machinerc] -h --help Show this screen. --version Show version.
Config File
You can tell todotxt-machine to use the same todo.txt file whenever it starts up by adding a file entry to the ~/.todotxt-machinerc file. If you want to archive completed tasks, you can specify a done.txt file using an archive entry. You can also set you preferred colorscheme or even define new themes. Here is a short example:
[settings] file = ~/todo.txt archive = ~/done.txt colorscheme = myawesometheme
Color Schemes
todotxt-machine currently supports solarized and base16 colors.
Pictured above are the following themes from left to right:
base16-light
base16-dark
solarized-light
solarized-dark
Here is a config file with a complete colorscheme definition:
[settings] file = ~/todo.txt colorscheme = myawesometheme [colorscheme-myawesometheme] plain=h250 selected=,h238 header=h250,h235 header_todo_count=h39,h235 header_todo_pending_count=h228,h235 header_todo_done_count=h156,h235 header_file=h48,h235 dialog_background=,h248 dialog_color=,h240 dialog_shadow=,h238 footer=h39,h235 search_match=h222,h235 completed=h59 context=h39 project=h214 creation_date=h135 due_date=h161 priority_a=h167 priority_b=h173 priority_c=h185 priority_d=h77 priority_e=h80 priority_f=h62
You can add colorschemes by adding sections with names that start with colorscheme-. Then under the [settings] section you can say which colorscheme you want to use.
The format for a color definitions is:
name=foreground,background
Foreground and background colors are follow the 256 color formats defined by urwid. Here is an excerpt from that link:
High colors may be specified by their index h0, …, h255 or with the shortcuts for the color cube #000, #006, #008, …, #fff or gray scale entries g0 (black from color cube) , g3, g7, … g100 (white from color cube).
You can see all the colors defined here.
I recommend you leave the foreground out of the following definitions by adding a comma immediately after the =
selected=,h238 dialog_background=,h248 dialog_color=,h240 dialog_shadow=,h238
If you want to use your terminal’s default foreground and background color use blank strings and keep the comma:
dialog_background=,
Let me know if you make any good colorschemes and I’ll add it to the default collection.
Key Bindings
General
h, ? - show / hide this help message q - quit and save t - show / hide toolbar w - toggle word wrap b - toggle borders on todo items S - save current todo file R - reload the todo file (discarding changes)
Movement
mouse click - select any todo, checkbox or button j, down - move selection down k, up - move selection up g, page up - move selection to the top item G, page down - move selection to the bottom item left, right - move selection between todos and filter panel H, L tab - toggle focus between todos, filter panel, and toolbar
Manipulating Todo Items
x - complete / un-complete selected todo item X - archive completed todo items to done.txt (if specified) n - add a new todo to the end of the list o - add a todo after the selected todo (when not filtering) O - add a todo before the selected todo (when not filtering) enter, A, e - edit the selected todo D - delete the selected todo J - swap with item below K - swap with item above
While Editing a Todo
tab - tab complete contexts and projects return - save todo item left, right - move cursor left and right ctrl-b - move cursor backwards (left) by one word ctrl-f - move cursor forwards (right) by one word home, end - move cursor the beginning or end of the line ctrl-a, ctrl-e ctrl-w - delete one word backwards ctrl-k - delete from the cursor to the end of the line ctrl-y - paste last deleted text
Filtering
f - open the filtering panel F - clear any active filters
Sorting
s - toggle sort order (Unsorted, Ascending, Descending) sort order is saved on quit
Searching
/ - start search enter - finalize search C - clear search
Known Issues
OSX
Tmux
With tmux the background color in todotxt-machine can sometimes be lost at the end of a line. If this is happening to you set your $TERM variable to screen or screen-256color
export TERM=screen-256color
Planned Features
[STRIKEOUT:User defined color themes]
[STRIKEOUT:Manual reordering of todo items]
[STRIKEOUT:Config file for setting colors and todo.txt file location]
[STRIKEOUT:Support for archiving todos in done.txt]
Custom keybindings
Add vi readline keybindings. urwid doesn’t support readline currently. The emacs style bindings currently available are emulated.
Updates
See the log here
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distributions
File details
Details for the file todotxt-machine-2.1.0.tar.gz
.
File metadata
- Download URL: todotxt-machine-2.1.0.tar.gz
- Upload date:
- Size: 36.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 46bcfb27219f81c853a679512aa0024e17da459916538ca615ee7c25eefb2542 |
|
MD5 | 42d3acc59e7803f463c644d1d10784b5 |
|
BLAKE2b-256 | 1c33528aa26da3873ece15519ad3fd9e0cb53c4c9a25720daaf7aac944257ad7 |
File details
Details for the file todotxt_machine-2.1.0-py3.4.egg
.
File metadata
- Download URL: todotxt_machine-2.1.0-py3.4.egg
- Upload date:
- Size: 89.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 01f34067a0687f0235aa03159b4b6fabe87acc6dee1e89b32eab6ceb4c5dbacd |
|
MD5 | 04b44a9790e4d6b7f61d4f35bc49f22f |
|
BLAKE2b-256 | 2ee797f1c436b827902917d40ed4b93e0d8eca739241cdcfdaf76a3a960ba081 |
File details
Details for the file todotxt_machine-2.1.0-py2.py3-none-any.whl
.
File metadata
- Download URL: todotxt_machine-2.1.0-py2.py3-none-any.whl
- Upload date:
- Size: 41.2 kB
- Tags: Python 2, Python 3
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 97afe4e38423f7be9f54bf793708565a70a640e3d1ddcc4ef674cce687a63a9d |
|
MD5 | a007c7d7d9bde1e4b6b3d54d265f2bff |
|
BLAKE2b-256 | 6585972cbd40cdef2539e632f0ce6c5595026b8a8d7fd2609b1401cf4b4a5bb6 |
File details
Details for the file todotxt_machine-2.1.0-py2.7.egg
.
File metadata
- Download URL: todotxt_machine-2.1.0-py2.7.egg
- Upload date:
- Size: 87.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3ed67b75b20c8f66ffef3b4ec06638278663795af0138f870653081c1b5daf14 |
|
MD5 | 7591b974a8bb6db2698396ce2543c7bf |
|
BLAKE2b-256 | 7b2355e977532020e8830b262e1db7c4cb2fae9110d4b6591d6f0852d0665fd3 |