topydo
Manage todo lists from the command line
TLDR
Add a to-do to a specific project with a given context
Add a to-do with a due date of tomorrow with a priority of A
Add a to-do with a due date of Friday
Add a non-strict repeating to-do (next due = now + rec)
Add a strict repeating to-do (next due = current due + rec)
Revert the last topydo command executed
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.