A SQLite-based todo plugin for Oh-My-Zsh, providing persistent storage and efficient task management.
- Oh-My-Zsh
- SQLite3
- Zsh
-
Install sqlite3 if not already installed:
# Ubuntu/Debian sudo apt install sqlite3 # CentOS/RHEL sudo yum install sqlite # Arch sudo pacman -Sy sqlite # macOS brew install sqlite
-
Clone this repository into your Oh-My-Zsh custom plugins directory:
git clone https://github.com/murapa96/ztodo ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/ztodo
-
Add
ztodo
to your plugins array in~/.zshrc
:plugins=(... ztodo)
-
Reload your shell:
source ~/.zshrc
ztodo add
- Add a new todo itemztodo list
- List all active todo itemsztodo remove <id>
- Remove a specific todo itemztodo complete <id>
- Mark a todo item as completeztodo clear
- Remove expired and completed tasksztodo search <keyword>
- Search tasks by keywordztodo help
- Show help message
- SQLite-based persistent storage
- Color-coded priority levels
- Task categorization
- Deadline tracking
- Task completion tracking
- Efficient search capabilities
- Automatic cleanup of expired tasks
The plugin will automatically create a configuration file at ~/.ztodo.conf
if it doesn't exist. You can customize the following settings:
# Database location
ZTODO_DB_PATH="$HOME/.ztodo.db"
# Default task settings
ZTODO_DEFAULT_CATEGORY="general"
ZTODO_DEFAULT_PRIORITY=2 # 1=high, 2=medium, 3=low
# Notification settings
ZTODO_SHOW_UPCOMING_DEADLINES="true" # Show upcoming deadlines when opening a terminal
ZTODO_UPCOMING_DAYS=7 # Number of days to look ahead for deadlines
# Display settings
ZTODO_COLOR_ENABLED="true" # Enable colored output
See Configuration File for an example.
If you prefer to manage all configuration in your .zshrc
file, you can disable the configuration file:
# Disable the configuration file
ZTODO_USE_CONFIG_FILE="false"
# Then set your configuration options
ZTODO_DB_PATH="$HOME/my-tasks.db"
ZTODO_DEFAULT_CATEGORY="work"
ZTODO_DEFAULT_PRIORITY=1
ZTODO_SHOW_UPCOMING_DEADLINES="true"
ZTODO_UPCOMING_DAYS=5
ZTODO_COLOR_ENABLED="true"
# These must be set before Oh-My-Zsh loads the plugin
plugins=(... ztodo)
source $ZSH/oh-my-zsh.sh
You can also change the location of the configuration file:
# Set custom config path before loading oh-my-zsh
ZTODO_CONFIG_PATH="$HOME/Documents/ztodo-config.conf"
# Then load oh-my-zsh
source $ZSH/oh-my-zsh.sh
These are features we're planning to implement in the future:
- ClickUp Integration: Sync tasks with your ClickUp workspaces, push local tasks to ClickUp, and pull assigned tasks to your local environment.
- Notion Integration: Seamlessly sync with Notion databases, enabling bidirectional updates between ZTodo and your Notion workspace.
- GitHub Issues: Convert GitHub issues to local tasks and vice versa, ideal for developers managing project tasks.
- Jira Integration: For enterprise users, sync with Jira tickets and track work across platforms.
- Google Calendar: Sync tasks with Google Calendar for deadline management.
- Slack Integration: Receive task reminders and updates directly in your Slack channels.
- More database options: Support for PostgreSQL, MySQL, and MongoDB.
- Recurring Tasks: Set up tasks that repeat on daily, weekly, monthly, or custom schedules.
- Time Tracking: Track how long you spend on each task.
- Subtasks Support: Break down complex tasks into manageable subtasks.
- Calendar View: Visual representation of your deadlines in calendar format.
- Data Export/Import: Export your tasks as CSV/JSON and import from various formats.
- Task Templates: Create templates for common task types with predefined attributes.
- Team Sharing: Share tasks with team members (requires server component).
- Per Task History: Configure your ZSH history to log task-related commands.
- Interactive TUI: A full terminal user interface for easier task management.
- Custom Theming: Define your own color schemes and styling.
- Dashboard View: Overview of task statistics and upcoming deadlines.
- Notifications: Desktop notifications for upcoming deadlines and reminders.
- Mobile App: Companion app for managing tasks on the go.
- Web Interface: A web-based dashboard for managing tasks from any device.
If you'd like to contribute to any of these features, please check out our Contributing Guide.
Apache License 2.0