LinuxCommandLibrary

todoist

Manage your Todoist tasks from the terminal

TLDR

Add a task

$ todoist add "[task_name]"
copy

Add a high priority task with a label, project, and due date
$ todoist add "[task_name]" --priority [1] --label-ids "[label_id]" --project-name "[project_name]" --date "[tmr 9am]"
copy

Add a high priority task with a label, project, and due date in quick mode
$ todoist quick '#[project_name] "[tmr 9am]" p[1] [task_name] @[label_name]'
copy

List all tasks with a header and color
$ todoist --header --color list
copy

List all high priority tasks
$ todoist list --filter p[1]
copy

List today's tasks with high priority that have the specified label
$ todoist list --filter '(@[label_name] | [today]) & p[1]'
copy

SYNOPSIS


todoist [OPTIONS] COMMAND [ARGS]...

Common Commands:
add <content> [OPTIONS] - Add a new task.
list [OPTIONS] - List tasks.
show <task_id> - Show details of a specific task.
done <task_id>... - Mark tasks as complete.
edit <task_id> [OPTIONS] - Edit an existing task.
projects - List all projects.
labels - List all labels.
sync - Synchronize local data with Todoist.

PARAMETERS

--version
    Show the installed version of todoist-cli and exit.

--help
    Display help message for the todoist command or a specific subcommand.

--config
    Specify an alternative path for the configuration file (default: ~/.config/todoist/config.ini).

--no-sync
    Prevent automatic synchronization with the Todoist API before executing the command.


    The text content for a new task when using the 'add' subcommand.

--project
    Specify the project for a new or existing task by name or ID. Used with 'add' or 'edit'.

--due
    Set a due date for a task (e.g., 'today', 'tomorrow', 'next monday', 'every 2 weeks'). Used with 'add' or 'edit'.

--label
    Assign a label to a task by name or ID. Can be used multiple times. Used with 'add' or 'edit'.

--priority
    Set task priority (1: highest, 4: lowest). Used with 'add' or 'edit'.

--filter
    Filter tasks based on Todoist query syntax (e.g., 'today & p1'). Used with 'list'.

--show-completed
    Include completed tasks in the listing. Used with 'list'.

DESCRIPTION

The todoist command, primarily referring to the community-developed
todoist-cli Python package, provides a powerful and lightweight command-line interface for interacting with the Todoist task management service directly from your Linux terminal. It allows users to manage their tasks, projects, labels, and filters without needing to open the web application or a dedicated desktop client. This tool is invaluable for users who prefer terminal-centric workflows, wish to integrate task management into scripts, or need quick access to their Todoist data. It supports core functionalities like adding new tasks, listing existing tasks with various filters, marking tasks as complete, and managing task properties such as due dates, priorities, and assigned projects. The todoist command communicates with the official Todoist API, requiring an API token for authentication, and it includes features for local data synchronization to enhance performance and offline access. Its modular design, based on a series of subcommands, makes it versatile for a wide range of task management operations.

CAVEATS

The todoist command is typically implemented by the community-developed
todoist-cli package, not an official Todoist product. It requires Python and
pip for installation. Users must obtain a personal API token from their Todoist account settings for authentication, as the command interacts directly with the Todoist API. Be aware of Todoist API rate limits, though typical usage is unlikely to hit them. While comprehensive, this CLI client might not support every niche feature of the Todoist web or mobile applications, as its functionality is dependent on the public Todoist API and the developer's implementation.

AUTHENTICATION

To use the todoist command, you need to set up authentication. Obtain your Todoist API token from your Todoist account settings (Integrations -> Developer). Then, run todoist config and paste your token when prompted. This token is stored in
~/.config/todoist/config.ini.

SYNCHRONIZATION

The command maintains a local cache of your Todoist data for faster access. Before most commands, it automatically performs a synchronization with the Todoist API. You can manually force a sync using the todoist sync command. To prevent automatic sync for a specific command, use the
--no-sync global option.

HISTORY

The todoist-cli, which is the most common implementation of the todoist command on Linux, was primarily developed by Sean Schaaf (schaabs) and released as an open-source project on GitHub. Its development began in the mid-to-late 2010s, providing a much-requested command-line interface for Todoist users. Since its inception, it has seen continuous development, adapting to changes in the Todoist API and incorporating features based on community feedback and contributions. It has become a de facto standard for command-line Todoist interaction due to its robustness and active maintenance.

SEE ALSO

todotxt(1), curl(1), remind(1)

Copied to clipboard