TUIODO is a feature-rich, terminal-based task management application built with Go. It provides an intuitive, keyboard-driven interface with mouse support, making it easy to manage your tasks directly from the terminal.
A beautiful, lightning-fast terminal task manager with extensive customization.
- Dynamic Category Colors - Customize colors for each task category
- Priority Visibility - Priority indicators automatically hidden for completed tasks
- Intelligent Sorting - Completed tasks always appear at the bottom regardless of sort order
- Visual Consistency - Categories for completed tasks appear with dimmed colors
- Gorgeous Modern UI with clean typography and visual hierarchy
- Brilliant Colors with monochrome mode support (
--no-color) - Mouse Support with hover effects and click interactions (where supported)
- Keyboard-Driven workflow with intuitive, vim-inspired shortcuts
- Instant Performance with optimized rendering and caching
- Comprehensive CLI with extensive configuration options
- Priority Levels (Critical/High/Medium/Low) with color coding
- Dynamic Category Organization with configurable colors
- Smart Filtering by status, category, and priority
- Task Expansion to view full details of any task
- Circular Navigation with wrap-around cursor movement
- Delete Confirmation with undo capability
- Rich Metadata Support using @tag notation
- Markdown Storage in simple, human-readable format (
~/TODO.mdby default) - Automatic Backups with configurable options
TUIODO supports several metadata tags for enhanced task tracking:
- @priority - Set task importance (critical/high/medium/low)
- @created - Automatically tracked creation timestamp
- @due - Set deadlines with YYYY-MM-DD format
- @tag - Add custom tags to group related tasks
- @status - Track custom status values
- Automatic Backups with configurable options
- Git Repository Detection - Automatically uses TODO.md at git repository root when available
- Multi-device Sync via configurable storage paths (share tasks via Dropbox, etc.)
- Import/Export to standard formats (coming soon)
- Extensive Configuration via YAML configuration files
- Theme Support with pre-built and custom themes
- Custom Keybindings to match your workflow
- Command Palette for quick access to all features (coming soon)
- Plugin System for extending functionality (coming soon)
- Go 1.24+ (or use the pre-built binaries)
- A terminal with true color support recommended (iTerm2, Alacritty, Kitty, etc.)
# Install from the official tap
brew tap spmfte/tuiodo
brew install tuiodoNOTE: Work in progress.
# Using yay
yay -S tuiodo
# Using paru
paru -S tuiodo
# Manual installation from AUR
git clone https://aur.archlinux.org/tuiodo.git
cd tuiodo
makepkg -sigo install github.com/spmfte/tuiodo@latest# Clone the repository
git clone https://github.com/spmfte/tuiodo.git
cd tuiodo
# Build the project
go build
# Run it
./tuiodoJust run tuiodo to start the application. Use the keyboard shortcuts to navigate and manage your tasks.
It is recommended to use the following alias:
echo "alias todo='tuiodo'" >> "$HOME/.$(which "$SHELL" | awk -F'/' '{print $NF}')rc"which "$SHELL"retrieves the full path of the current shell (e.g.,/bin/zshor/bin/bash).awk -F'/' '{print $NF}'extracts only the last part of the path, which is the shell name (e.g.,zshorbash)."$HOME/.$(which "$SHELL" | awk -F'/' '{print $NF}')rc"constructs the appropriate shell configuration file path (~/.zshrc,~/.bashrc, etc.).echo "alias todo='tuiodo'" >> "$HOME/.$(which "$SHELL" | awk -F'/' '{print $NF}')rc"appends the alias to the correct shell config file.- After running this command, reload your shell configuration with
source ~/.zshrc(orsource ~/.bashrc) to apply the alias. - You can now run
todoinstead oftuiodoto start the application.
Press a to add a new task. You can organize tasks by category using the format:
"Category: Task description"
For example:
- "Work: Finish quarterly report"
- "Personal: Call mom about birthday plans"
- "Health: Schedule dentist appointment"
Use the p key to cycle through priority levels for the selected task:
None → Low → Medium → High → Critical → None
Add metadata to tasks using @ notation:
@due:2023-12-31- Sets a due date@tag:important- Adds a custom tag@status:in-progress- Sets a custom status
# Basic usage
tuiodo
# Use a specific config file
tuiodo --config ~/.config/tuiodo/my-config.yaml
# Use a different storage file
tuiodo --storage ~/projects/work-tasks.md
# Start with specific view and sorting
tuiodo --view pending --sort priority
# Terminal-friendly mode
tuiodo --no-mouse --no-color
# Configure backup behavior
tuiodo --backup-dir ~/backups --max-backups 10
# Start with specific category and view
tuiodo --category Work --view pending| Action | Keys |
|---|---|
| Navigation | |
| Move cursor down | j ↓ |
| Move cursor up | k ↑ |
| Next page | n → l |
| Previous page | b ← h |
| Switch tabs | tab t |
| Task Management | |
| Add task | a |
| Edit task | e |
| Delete task | d (press twice to confirm) |
| Undo delete | u |
| Toggle completion | space enter |
| Expand task details | x |
| Cycle priority | p |
| Filtering | |
| Cycle categories | c |
| Sort by priority | s |
| Sort by date | S |
| Sort by category | C |
| Other | |
| Show/hide help | ? F1 |
| Quit | q Ctrl+c |
TUIODO supports extensive configuration through a YAML file located at ~/.config/tuiodo/tuiodo.yaml.
Configuration files are automatically loaded from the following locations (in order):
- Custom path specified with
--config /path/to/config.yaml ~/.config/tuiodo/tuiodo.yaml(primary location)- User config directory as reported by OS
- Current directory
./tuiodo.yaml
To generate a default configuration file:
tuiodo --create-default-configThe configuration file is divided into these main sections:
general:
default_category: "Uncategorized" # Default category for new tasks
show_status_bar: true # Show status bar at bottom
tasks_per_page: 10 # Number of tasks to show per page
clear_status_after_seconds: 3 # Time before status messages disappearui:
show_header: true # Show app header
header_format: "TUIODO" # Header text
show_categories: true # Show category labels
show_priorities: true # Show priority indicators
task_separator: "─" # Character used to separate tasks
enable_tabs: true # Show tab bar
enable_borders: true # Show container borders
border_style: "rounded" # Border style (rounded, normal, double, thick, none)
date_format: "2006-01-02" # Go date format for creation datescolors:
theme: "default"
primary: "#7C3AED"
secondary: "#2563EB"
tertiary: "#10B981"
# ... other base colors ...
# Custom category colors
category_colors:
ui: "#8B5CF6" # Purple for UI tasks
add-task: "#EC4899" # Pink for add-task
bug: "#EF4444" # Red for bugs
function: "#10B981" # Green for function
fix: "#F59E0B" # Amber for fixes
functionality: "#3B82F6" # Blue for functionality
layout: "#6366F1" # Indigo for layout
docs: "#2563EB" # Blue for docs
storage: "#14B8A6" # Teal for storage
# You can add your own categories:
my-category: "#9333EA" # Custom color for your categorykeybindings:
quit: ["q", "ctrl+c"]
add_task: ["a"]
edit_task: ["e"]
delete_task: ["d"]
toggle_task: ["enter", "space"]
cycle_priority: ["p"]
cycle_category: ["c"]
cycle_tab: ["tab", "t"]
next_page: ["right", "l", "n"]
prev_page: ["left", "h", "b"]
move_cursor_up: ["up", "k"]
move_cursor_down: ["down", "j"]
help: ["?", "F1"]storage:
file_path: "TODO.md" # Path to task storage file
backup_directory: "~/.config/tuiodo/backups" # Backup directory
auto_save: true # Save automatically on changes
backup_on_save: true # Create backups when saving
max_backups: 5 # Maximum number of backups to keepTasks are stored in a simple Markdown format that's human-readable and version-control friendly:
## Work
- [ ] Prepare presentation @priority:high @due:2023-06-15
- [x] Send weekly report @priority:medium
## Personal
- [ ] Buy groceries @priority:low
- [ ] Call mom @due:2023-05-10- Categories: Denoted by
## Category Name - Tasks: Uses GitHub-style checkbox syntax
- [ ]for pending tasks- [x]for completed tasks
- Metadata:
- Priorities:
@priority:high,@priority:medium,@priority:low - Due dates:
@due:YYYY-MM-DD
- Priorities:
You can store your tasks anywhere:
# Store in a Dropbox folder for sync between devices
tuiodo --storage ~/Dropbox/tasks.md
# Project-specific task list
tuiodo --storage ~/projects/awesome-project/TODO.mdCreate a custom theme by defining your own colors in the config:
colors:
# Use a light theme
theme: "custom"
primary: "#8B5CF6" # Purple
secondary: "#3B82F6" # Blue
text: "#1F2937" # Dark gray
background: "#F9FAFB" # Light gray
# ... other color settingsLink tasks together with dependencies:
- [ ] Design project architecture @priority:high
- [ ] Implement database layer @depends:1
- [ ] Write unit tests @depends:2To upgrade to the latest version:
go install github.com/spmfte/tuiodo@latestContributions are very welcome! Please feel free to submit a Pull Request.
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- Bubble Tea - The amazing TUI framework
- Lip Gloss - Style definitions for terminal applications
- Charm - For their suite of beautiful terminal tools




