Skip to content
 
 

Latest commit

 

History

41 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 

Repository files navigation

HydroToDo

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.


Features

  • 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 or Esc to save & exit).
  • Per-task Timers:
    Start/stop a timer per task with t — it persists in the database, so it keeps running (in wall-clock terms) even if you quit and reopen the app. Timed tasks show as PENDING until marked done. Use T to manually set/edit the time spent (e.g. 1h30m, 90m).
  • Time Statistics:
    Press s to see count/avg/median/std/min/max time spent, globally and per tab.
  • Vim-style Navigation:
    Use j/k to move between tasks and h/l to switch tabs.
  • Custom Colors:
    Edit color1, color2, color4, color_highlight, color_done, and color_muted at the top of hydrotodo.py to theme the app — accepts [r, g, b] lists or "#rrggbb" hex strings.
  • Kitty Image Support:
    Displays blaus.png in the header using the Kitty terminal graphics protocol.
  • SQLite Persistence:
    Tasks, notes, timers, and completion dates are stored locally in ~/.hydrotodo.db.
  • Responsive Design:
    Handles terminal resizing and warns if the window is too small.

Preview

hydroexample.mp4


Requirements

  • 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 the windows-curses package, but compatibility and support are not guaranteed.


Installation

Clone the repository and navigate to the project folder:

git clone https://github.com/GHeier/HydroToDo.git
cd HydroToDo

If on Windows:

pip install windows-curses

Usage

Run the script directly from your terminal:

python3 hydrotodo.py

Keybindings

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
t Start/stop timer for selected task (persists if you quit)
T Manually edit time spent (e.g. 1h30m, 90m)
Ctrl+T New tab (category)
Ctrl+W Close current tab
p Toggle preview pane
Alt+J / Alt+K Scroll preview pane
s Show/hide time statistics
Ctrl+H Show/hide help
q Quit the app

Task checkboxes are tri-state: [ ] TODO, [-] PENDING (timer has been started), [X] DONE (toggled with Enter).

In the notes editor: Ctrl+F or Esc saves the note and exits — there's no discard/cancel option.


Customization

Edit the variables at the top of hydrotodo.py:

# ─── Theme colors ─────────────────────────────────────────────────────────
color1          = [40, 118, 252]   # title / accent color
color2          = "#65dded"        # secondary accent (cyan)
color4          = "#65dded"        # help hint
color_highlight = [58, 58, 80]     # selected task / active tab background
color_done      = curses.COLOR_GREEN  # completed task / "Done:" label
color_muted     = [110, 110, 110]  # grayed-out / completed task text

# ─── Layout constants ─────────────────────────────────────────────────────
BLAUS_DISPLAY_ROWS = 8   # height of mascot image in terminal rows
BLAUS_DISPLAY_COLS = 20  # width of mascot image in terminal columns
TASK_BOX_HEIGHT    = 9   # height of task list box when preview panel is shown

Colors accept either [r, g, b] (0–255) or "#rrggbb" hex strings. Requires a terminal that supports can_change_color() (most modern terminals do).


Contributing

HydroToDo is under active development and currently in Beta.
Suggestions and contributions are welcome via issues or pull requests.


Credits

This fork is built on top of HydroToDo by Henriquehnnm. The original project laid the foundation for everything here.


Contact

For questions or suggestions, please open an issue or contact via email.

About

A fork of HydroToDo with a Blausetoise twist

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages