Featured app: RTM-CLI
Friday, October 5, 2012 by Brendan Ganley
For some people, the command line is a scary place reserved only for the most dire emergencies. For others, it's the quickest and easiest way to do just about everything. If you fall into the second category, take a look at David Waring's RTM-CLI script. If you're a serious command line enthusiast looking to manage your Remember The Milk tasks, this script is a must-have.Read More
Remember the Milk is a superb and popular task-management web-app. It has a lot of great features and excellent integration with some third-party services (such as Gmail and Google Calendar, Twitter, IM, SMS and smartphone apps). However, I wanted an easy to use command line program that would make displaying and managing my task list even that much quicker and easier. This project aims at creating a full command-line interface for Remember the Milk using the official API.
Contributions Welcome! Feel free to check out the source code on GitHub and contribute to improvements and/or new commands that can extend RTM-CLI's capabilites even further.
RTM CLI aims to be a fully-featured Command Line Interface for your Remember the Milk tasks. Ideally, you should be able to completely manage your tasks directly from the command line.
Currently, RTM CLI offers the following features:
If you already have NodeJS installed then you can easily install RTM CLI using
This will install the latest version as a global module and will link the
npm install -g rtm-cli
rtmexecutable into your
Pre-compiled binaries, that don't require a pre-existing Node installation, are available for Linux, Mac, and Windows systems on GitHub:
Download Binaries on GitHub
For the full usage information, see the project's README on GitHub.
The script's usage is fairly straight forward. Just use
rtm followed by a single command. When applying a function to a particular task
you need to reference the task by its index number - which is the number to the left of each task (see labeled screenshot on right). When referencing lists or tags, use thier names (case-sensitive).
Filters, used when displaying tasks or clearing completed tasks, use RTM's advanced search syntax.
Interactive Mode: Use
rtm without any commands to start the interactive mode, which can be used to give multiple commands to the script.
The task properties that are displayed include its priority, name, an indicator of any associated notes (the number of
indicates the number of notes that are associated with the task), any tags (displayed with the
# symbol), the task's due date if its incomplete or the completed date for completed tasks.
To display all tasks divided into their lists and then sorted by priority use:
which will display:
Errands: 03 (1) Overdue task | Fri 10-12 01 (1) Buy Milk #groceries #urgent | Sun 10-14 06 (2) Update RTM tasks | Sun 10-14 08 (3) Do Laundry | Mon 10-15 02 Due anytime 05 Has two notes** 04 Buy Müsli #groceries | Tue 10-16 07 x Wash Car x Sun 10-14 Work: 15 (1) Quit job #urgent | Sun 10-14 16 (1) High Priority | Mon 10-15 17 (2) Has one note* | Mon 10-15 09 (2) Medium Priority | Tue 10-16 10 (3) Low Priority | Wed 10-17 13 No Priority #tag1 #tag2 #tag3 11 x completed task x Sun 10-14 14 x completed task with note x Sun 10-14 12 x completed task with tag #tag1 x Sun 10-14
In order to display tasks divided by their due dates (task items with no due date will be grouped at the bottom) and then sorted by priority, use:
Fri 10-12 03 (1) Errands: Overdue task Sun 10-14 01 (1) Errands: Buy Milk #groceries #urgent 15 (1) Work: Quit job #urgent 06 (2) Errands: Update RTM tasks 11 x Work: completed task x Sun 10-14 Mon 10-15 16 (1) Work: High Priority 17 (2) Work: Has one note* 08 (3) Errands: Do Laundry 14 x Work: completed task with note x Sun 10-14 07 x Errands: Wash Car x Sun 10-14 Tue 10-16 09 (2) Work: Medium Priority 04 Errands: Buy Müsli #groceries 12 x Work: completed task with tag #tag1 x Sun 10-14 Wed 10-17 10 (3) Work: Low Priority No Due Date 02 Errands: Due anytime 05 Errands: Has two notes** 13 Work: No Priority #tag1 #tag2 #tag3
will display tasks sorted first by priority and then by list name:
03 (1) Errands: Overdue task | Fri 10-12 01 (1) Errands: Buy Milk #groceries #urgent | Sun 10-14 15 (1) Work: Quit job #urgent | Sun 10-14 16 (1) Work: High Priority | Mon 10-15 06 (2) Errands: Update RTM tasks | Sun 10-14 17 (2) Work: Has one note* | Mon 10-15 09 (2) Work: Medium Priority | Tue 10-16 08 (3) Errands: Do Laundry | Mon 10-15 10 (3) Work: Low Priority | Wed 10-17 02 Errands: Due anytime 05 Errands: Has two notes** 04 Errands: Buy Müsli #groceries | Tue 10-16 13 Work: No Priority #tag1 #tag2 #tag3 11 x Work: completed task x Sun 10-14 14 x Work: completed task with note x Sun 10-14 12 x Work: completed task with tag #tag1 x Sun 10-14 07 x Errands: Wash Car x Sun 10-14
To display a weekly planner, use:
rtm planner <start> <filter>
<start> specifies the start day for the week and can be either
<filter> is a filter string following RTM's advanced search rules.
Tasks without any due date or were due before the first day of the planner will be shown below the planner.
The width of the planner will fit the width of your console window, clipping the names of tasks that are too long to fit in the space provided for a specific day.
Single tasks can be modified by specifying its task index number after the command. When no task index is given, the user will be able to enter multiple tasks and arguments at a prompt. For example, to mark task #15 as complete, the command is:
rtm comp 15
rtm comp (note the missing task index)
will bring up a prompt to enter multiple tasks to mark as complete.
New tasks are added using the following format:
task name due date p:priority l:list t:tag t:tag
For example, to add a task to pick up the dry cleaning on Thursday with a priority of 2 to the list named Errands with an urgent tag, the command would be:
rtm add pick up dry cleaning Thurs p:2 l:Errands t:urgent
Task names can now be edited / changed using the
rtm edit [index] [new name] command.
rtm --help for all currently supported functions:
Usage: rtm [options] <command> [command arguments] Options: -V, --version output the version number -p, --plain do not use styled/colored text (overrides --color) -c, --color force the use of styled/colored text -s, --status toggle the display of the status spinner -x, --completed [value] set display of completed tasks (true/false/number of days) -d, --hideDue [value] hide tasks due more than n days from today (false/number of days) -f, --config [file] specify configuration file -h, --help output usage information Commands: add|a [task...] Add a new Task addList|al [name] [filter...] Add a new List or Smart List addTags|at [index] [tags...] Add one or more tags to a Task comp|x [indices...] Complete one or more Tasks decPri|- [indices...] Decrease the Priority of one or more Tasks due [index] [due...] Set the Due Date of a Task edit [index] [name...] Change the name of a Task incPri|+ [indices...] Increase the Priority of one or more Tasks lists|l Display all lists login Add RTM User information logout Remove RTM User information ls [filter...] List all tasks sorted first by list then by priority lsd [filter...] List all tasks sorted first by due date then by priority lsp [filter...] List all tasks sorted first by priority then due date move|mv [index] [list...] Move Task to a different List planner [start] [filter...] Display tasks in a weekly planner (start: sun, mon, today) postpone|pp [indices...] Postpone one or more Tasks pri|p [index] [priority] Change Task Priority remove|rm [indices...] Remove one or more Tasks removeList|rml [name...] Remove a List removeTags|rmt [index] [tags...] Remove one or more tags from a Task renameList|mvl [oldName] [newName] Rename a List reset Reset cached task indices tags|t Display all tags uncomp|unc [indices...] Mark one or more Tasks as not complete whoami Display RTM user information today Display prioritized tasks and tasks due or completed today
Copyright (c) 2017 David Waring
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.