Skip to content

codegoalie/rttui

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

31 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

rttui

A terminal user interface for Remember The Milk.

Browse, search, add, and complete tasks without leaving the terminal.

Features

  • Task list grouped by date bucket: Overdue, Today, Tomorrow, day-of-week, No Due Date
  • Within each bucket, tasks sorted by priority then due time
  • Color-coded priority bar on each task (red = high, yellow = medium, blue = low)
  • RTM filter search with vim-style navigation
  • Smart task input with syntax highlighting for due dates, priorities, lists, tags, and recurrence
  • Completes tasks in-place and refreshes the list

Requirements

Setup

  1. Clone and build:
git clone <repo>
cd rttui
go build -o rttui .
  1. Set your credentials as environment variables:
export RTM_API_KEY=<your api key>
export RTM_SHARED_SECRET=<your shared secret>

See .envrc.example for a 1Password reference pattern if you use direnv + 1Password CLI.

  1. Run:
./rttui

On first run, rttui will print an authorization URL. Open it in your browser, grant access, then press Enter. The token is saved to $XDG_CONFIG_HOME/rttui/token (typically ~/.config/rttui/token) and reused on subsequent runs.

Configuration

rttui reads an optional config file at $XDG_CONFIG_HOME/rttui/config.json (typically ~/.config/rttui/config.json). All fields are optional.

{
  "default_filter": "list:Inbox",
  "add_preset": "list:Chores",
  "refresh_interval_secs": 120
}
Field Description
default_filter RTM filter applied on startup when no CLI argument is given
add_preset Text pre-filled in the add bar when pressing n; cursor is placed after it so you can type the task name immediately. Backspace to remove it.
refresh_interval_secs How often (in seconds) tasks are automatically refreshed from the server. Defaults to 60. Set to a negative value to disable auto-refresh.

Usage

./rttui [filter]

Pass an optional RTM filter string as an argument to pre-filter the task list on startup. This overrides default_filter from the config file. Uses the same syntax as RTM's advanced search (e.g. "list:Work AND priority:1").

Keybindings

Key Action
j / k or arrow keys Move up/down
/ Open search bar
n Add a new task
c Complete selected task
r Refresh tasks from server
q / ctrl+c Quit

Search bar

The search bar accepts any RTM filter expression. It supports vim-style editing:

Key Action
Enter Submit search
Esc (insert mode) Switch to normal mode
Esc (normal mode) Close search bar
i / a / A / I Enter insert mode
h / l Move cursor left/right
w / b Jump word forward/backward
0 / $ Jump to start/end of line
x Delete character under cursor

Adding tasks (Smart Add)

Press n to open the add bar. The input supports a Smart Add syntax with live syntax highlighting:

Prefix Meaning Example
!1 !2 !3 Priority (high/medium/low) !1
^ Due date ^tomorrow, ^friday
# List #Work
% Tag %errand
* Recurrence *weekly

Press Enter to submit, Esc to cancel.

The %tag syntax is a local convenience — rttui converts it to #tag when sending to RTM, since RTM uses # for both lists and tags.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors