Skip to main content

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

https://raw.githubusercontent.com/AnthonyDiGirolamo/todotxt-machine/master/screenshots/animation1.gif

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
  todotxt-machine --show-default-bindings

Options:
  -c FILE --config=FILE               Path to your todotxt-machine configuraton file [default: ~/.todotxt-machinerc]
  -h --help                           Show this screen.
  --version                           Show version.
  --show-default-bindings             Show default keybindings in config parser format
                                      Add this to your config file and edit to customize

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.

https://raw.githubusercontent.com/AnthonyDiGirolamo/todotxt-machine/master/screenshots/todo_colors.png

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

You can customize any key binding by adding a setting to the [keys] section of your config file ~/.todotxt-machinerc.

For a list of the default key bindings run:

todotxt-machine --show-default-bindings

You can easily append this to your config file by running:

todotxt-machine --show-default-bindings >> ~/.todotxt-machinerc

When you edit a key binding the in app help will reflect it. Hit h or ? to view the help.

Known Issues

OSX

  • On Mac OS hitting ctrl-y suspends the application. Run stty dsusp undef to fix.

  • Mouse interaction doesn’t seem to work properly in the Apple Terminal. I would recommend using iTerm2 or rxvt / xterm in XQuartz.

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]

  • [STRIKEOUT: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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

todotxt-machine-2.2.1.tar.gz (37.0 kB view details)

Uploaded Source

Built Distribution

todotxt_machine-2.2.1-py2.py3-none-any.whl (47.2 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file todotxt-machine-2.2.1.tar.gz.

File metadata

File hashes

Hashes for todotxt-machine-2.2.1.tar.gz
Algorithm Hash digest
SHA256 cdfeae2c986576d5416b3ca533c6b12f15a63d1cdb848e2819ce8f178fc3c5b4
MD5 002f4f648cbdd9226b0e1f0fb013e32d
BLAKE2b-256 ec2c1bce046003e6f087e46f75cad1391e9f44e13a2e6ab4172e104b715f4fec

See more details on using hashes here.

File details

Details for the file todotxt_machine-2.2.1-py2.py3-none-any.whl.

File metadata

File hashes

Hashes for todotxt_machine-2.2.1-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 2338daeebd0e96a1cd35c1f44e0181f2c55e0abfdda0a341326b9628db5f661a
MD5 2afc61dbbe27069333d4be8fd25b07b0
BLAKE2b-256 27f02b675ded8b2a10ed2b854e1c16bdc025f0d4cce458807dea0a5144506046

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page