#tui #todoist #productivity

bin+lib terminalist

A terminal-based Todoist client with modern TUI interface

2 unstable releases

0.3.0 Sep 18, 2025
0.2.0 Sep 11, 2025

#1507 in Command line utilities

MIT license

495KB
6.5K SLoC

Terminalist - Todoist Terminal Client

Rust Build Status Crates.io License Terminal Todoist

πŸ“– Documentation: Configuration | Keyboard Shortcuts | Development | Architecture

A terminal application for interacting with Todoist, built in Rust with a modern TUI interface.

Terminalist Main Interface Terminalist Project View

Features

  • βœ… Interactive TUI Interface - Beautiful terminal user interface with ratatui
  • βœ… Local Data Caching - Fast, responsive UI with in-memory SQLite storage
  • βœ… Smart Sync - Automatic sync on startup and manual refresh with 'r'
  • βœ… Project Management - Browse projects with hierarchical display
  • βœ… Task Management - View, navigate, complete, and create tasks
  • βœ… Task Search - Fast database-powered search across all tasks with '/' shortcut
  • βœ… Keyboard & Mouse Navigation - Efficient keyboard operation with mouse support
  • βœ… Real-time Updates - Create, complete, and delete tasks/projects
  • βœ… Label Support - View task labels with colored badges
  • βœ… Responsive Layout - Adapts to terminal size with smart scaling
  • βœ… Help System - Built-in help panel with keyboard shortcuts
  • βœ… Configuration File - Customizable settings via TOML configuration

Installation

cargo install terminalist

Option 2: Build from Source

# Clone the repository
git clone https://github.com/romaintb/terminalist.git
cd terminalist

# Build the project
cargo build --release

# Run the application
cargo run --release

The binary will be available at target/release/terminalist after building.

Setup

1. Get your Todoist API Token

  1. Go to Todoist Integrations Settings
  2. Find the "API token" section
  3. Copy your API token

2. Set Environment Variable

export TODOIST_API_TOKEN=your_token_here

3. (Optional) Generate Configuration File

# Generate a default config file with all available options
terminalist --generate-config

This creates a config file at ~/.config/terminalist/config.toml with customizable settings.

4. Run the Application

terminalist

Configuration

Terminalist supports customization via TOML configuration files.

# Generate a default config file with all available options
terminalist --generate-config

This creates a config file at ~/.config/terminalist/config.toml.

πŸ“– See Configuration Guide for detailed configuration options.

Quick Start Controls

Essential keyboard shortcuts to get started:

Key Action
j/k Navigate tasks up/down
J/K Navigate projects up/down
Space Complete task
a Create new task
/ Search tasks
r Sync with Todoist
? Show help panel
q Quit

πŸ“– See Complete Keyboard Shortcuts for all available controls and interface details.

How It Works

Terminalist uses a smart sync mechanism:

  • Fast Startup: In-memory SQLite database for instant loading
  • Auto Sync: Syncs with Todoist on startup and every 5 minutes
  • Manual Sync: Press r to force refresh from Todoist
  • Real-time Updates: Create, modify, and delete tasks/projects immediately

πŸ“– See Architecture Guide for technical details.

Contributing

Contributions are welcome! See Development Guide for setup instructions and coding standards.

License

This project is open source. Feel free to modify and use as needed.

Dependencies

~44–64MB
~1M SLoC