LinuxCommandLibrary

topydo

Manage todo lists from the command line

TLDR

Add a to-do to a specific project with a given context

$ topydo add "[todo_message] +[project_name] @[context_name]"
copy

Add a to-do with a due date of tomorrow with a priority of A
$ topydo add "(A) [todo _message] due:[1d]"
copy

Add a to-do with a due date of Friday
$ topydo add "[todo_message] due:[fri]"
copy

Add a non-strict repeating to-do (next due = now + rec)
$ topydo add "water flowers due:[mon] rec:[1w]"
copy

Add a strict repeating to-do (next due = current due + rec)
$ topydo add "[todo_message] due:[2020-01-01] rec:[+1m]"
copy

Revert the last topydo command executed
$ topydo revert
copy

SYNOPSIS

topydo [-d DIRECTORY] [-f FILENAME] command [options] [arguments]

Common Usage Examples:
topydo add "New task description"
topydo list [filter]
topydo done ID
topydo archive

PARAMETERS

-d DIRECTORY, --directory DIRECTORY
    Specifies the directory where the todo.txt file is located. If not specified, topydo looks in the current working directory or a default path.

-f FILENAME, --file FILENAME
    Specifies the name of the todo file to use (e.g., mytasks.txt). The default is todo.txt.

-h, --help
    Displays a help message for the topydo command or a specific subcommand and exits.

-v, --version
    Shows the program's version number and exits.

DESCRIPTION

topydo is a command-line interface (CLI) tool designed for managing hierarchical todo lists using plain text files. It offers a simple yet powerful way to organize tasks, inspired by tools like Emacs Org-mode and Topy.

Unlike database-backed task managers, topydo operates directly on human-readable text files, typically named todo.txt, making the data easily accessible, portable, and version-controllable (e.g., with Git). Users can create tasks, nest them under parent tasks to form a hierarchy, mark them as done, archive completed items, defer tasks to a later date, and assign priorities or tags. Its robust filtering and searching capabilities allow users to quickly find specific tasks based on various criteria, including status, tags, and keywords. topydo promotes a straightforward workflow, enabling efficient task management directly from the terminal without relying on complex configurations or external dependencies beyond Python. The tool stores all task information within a single or multiple plain text files, where indentation defines the hierarchy. This design philosophy emphasizes simplicity, longevity of data, and interoperability with other text-based tools. It's an excellent choice for those who prefer a minimalist, keyboard-driven approach to personal task management.

CAVEATS

topydo, by design, relies on plain text files for data storage, which means it inherently lacks advanced features common in more complex task managers such as built-in reminders, recurring task generation, or sophisticated calendar integration. Synchronization across devices is not handled internally and requires external solutions like cloud storage or version control systems (e.g., Git). While powerful for command-line users, its plain-text nature and reliance on CLI interactions might present a steeper learning curve for users accustomed to graphical user interfaces.

FILE FORMAT AND HIERARCHY

topydo stores tasks in a simple plain-text file. Each task occupies a line, and subtasks are created by indenting them with tabs or spaces. Tasks can include special syntax for metadata such as @context (e.g., @home), +project (e.g., +work), (PRIORITY) (e.g., (A)), and completion dates. Completed tasks are typically marked with an 'x' prefix.

CONFIGURATION

topydo can be customized through a config.json file, usually located in ~/.config/topydo/. This file allows users to define default file paths, date formats, color schemes, and other display preferences. The topydo config subcommand provides an interactive way to view and modify these settings.

HISTORY

topydo was developed to provide a modern, robust, and plain-text-centric command-line interface for managing hierarchical todo lists. Its architecture is deeply inspired by established systems like Emacs Org-mode for task organization and the Python-based 'Topy' utility, aiming to offer a similar powerful plain-text experience with a more streamlined CLI. The project is open-source and primarily hosted on GitHub, evolving with community contributions to maintain its focus on simplicity, portability, and efficient task management for terminal users.

SEE ALSO

todo.txt-cli(1), task(1), remind(1), grep(1), sed(1)

Copied to clipboard