HydroToDo is a stylish, terminal-based task manager written in Python.
It allows you to organize, check off, and visualize your to-dos efficiently using a modern Text User Interface (TUI) built with curses.
With features like tabbed lists, a fzf-style preview pane, vim-style keybindings, and Kitty terminal image support, HydroToDo brings ease and clarity to your daily workflow.
Based on HydroToDo by Henriquehnnm — all credit to the original project.
- Add, Remove, and Complete Tasks:
Easily manage your to-do list—add new tasks, mark as done, or delete with a keystroke. - Tabbed Lists:
Organize your tasks into multiple categories, each in its own tab. - Preview Pane:
fzf-style detail panel shows notes and metadata for the selected task. - Notes Editor:
Attach multiline notes to any task with a built-in editor (Ctrl+F to save, Esc to cancel). - Vim-style Navigation:
Usej/kto move between tasks andh/lto switch tabs. - Custom Colors:
Editcolor1,color2,color4, andcolor_highlightat the top ofhydrotodo.pyto theme the app — accepts[r, g, b]lists or"#rrggbb"hex strings. - Kitty Image Support:
Displaysblaus.pngin the header using the Kitty terminal graphics protocol. - SQLite Persistence:
Tasks are stored locally in~/.hydrotodo.db. - Responsive Design:
Handles terminal resizing and warns if the window is too small.
hydroexample.mp4
- Python: Version 3.6 or higher
- sqlite3: Standard library (included with Python)
- curses: Terminal interface (native on Linux/macOS/WSL)
- Kitty terminal (optional): Required for the header image
Note: Officially supported on Linux, macOS, and WSL.
Windows users may try running HydroToDo with thewindows-cursespackage, but compatibility and support are not guaranteed.
Clone the repository and navigate to the project folder:
git clone https://github.com/GHeier/HydroToDo.git
cd HydroToDoIf on Windows:
pip install windows-cursesRun the script directly from your terminal:
python3 hydrotodo.py| Key | Action |
|---|---|
| j / ↓ / Ctrl+N | Move down in task list |
| k / ↑ / Ctrl+P | Move up in task list |
| h / ← | Switch to previous tab |
| l / → | Switch to next tab |
| Enter | Check/uncheck task |
| a | Add new task |
| d | Delete selected task |
| n | Edit notes for selected task |
| Ctrl+T | New tab (category) |
| Ctrl+W | Close current tab |
| Alt+P | Toggle preview pane |
| Alt+J / Alt+K | Scroll preview pane |
| Ctrl+H | Show/hide help |
| q | Quit the app |
Edit the variables at the top of hydrotodo.py:
color1 = [40, 118, 252] # title color
color2 = "#65dded" # accents
color4 = "#65dded" # help hint
color_highlight = [58, 58, 80] # selected task / active tab background
BLAUS_DISPLAY_ROWS = 8 # header image height in terminal rows
BLAUS_DISPLAY_COLS = 20 # header image width in terminal columnsColors accept either [r, g, b] (0–255) or "#rrggbb" hex strings. Requires a terminal that supports can_change_color() (most modern terminals do).
HydroToDo is under active development and currently in Beta.
Suggestions and contributions are welcome via issues or pull requests.
This fork is built on top of HydroToDo by Henriquehnnm. The original project laid the foundation for everything here.
For questions or suggestions, please open an issue or contact via email.