Omatodo — keyboard-first Omarchy plugin
Centered overlay, bar count, terminal TUI, and CLI. Plugin id: ed.omatodo.
Install
omarchy plugin add https://github.com/edwardrenton/omatodo.git --enable
That clones the plugin and enables the overlay. Confirm the bar-section picker if you want the open-count widget.
plugin add does not install a keybind or the omatodo command. Add those yourself:
Overlay shortcut — in ~/.config/hypr/bindings.lua:
o.bind("SUPER + ALT + T", "Omatodo", "omarchy-shell shell toggle ed.omatodo")
Do not bind Super+T (float) or Super+Ctrl+H (Hardware menu).
CLI / TUI — needs jq and python3 (curses is in the stdlib):
install -m 755 ~/.config/omarchy/plugins/ed.omatodo/omatodo ~/.local/bin/omatodo
Keep ~/.local/bin on your PATH. Run omatodo in a terminal, or omatodo --help.
Remove
omarchy plugin remove ed.omatodo
rm -f ~/.local/bin/omatodo
Then delete the Super+Alt+T line from ~/.config/hypr/bindings.lua if you added it.
Optional — your list and status labels (not removed with the plugin):
rm -f ~/.local/state/omarchy/ed.omatodo.json ~/.config/omarchy/ed.omatodo.json
TUI
omatodo in a terminal (or omatodo tui) is the same keyboard model as the overlay.
| Key | Action |
|---|---|
| type | Search; Create row if no exact match |
| Enter | Create, cycle status, or restore |
| Left | Cycle status backwards |
| Up / Down | Move |
| F2 / Ctrl+E | Rename |
| Delete / Ctrl+D | Move to trash (forever in trash) |
| Ctrl+T | Open / leave trash |
| Ctrl+R | Restore |
| Ctrl+X | Empty trash |
| Esc | Clear search, leave trash, or quit |
CLI
Same file as the overlay (~/.local/state/omarchy/ed.omatodo.json).
omatodo TUI (or list if not a terminal)
omatodo tui TUI
omatodo list List
omatodo add Buy milk Create (also: omatodo Buy milk)
omatodo status 1 blocked Set status
omatodo cycle 2 Next status
omatodo done 2 Mark completed
omatodo rename 1 New title
omatodo rm 3 Move to trash
omatodo trash List trash
omatodo restore 1
omatodo purge 1 Delete forever
omatodo empty
omatodo open Overlay
omatodo list --json
Items are a list number, id prefix, or unique text match.
Statuses
Order and colours:
| Status | Colour |
|---|---|
| Backlog | grey |
| Blocking | blue |
| Waiting | orange |
| Completed | green, struck through |
New todos land in Backlog. The bar count ignores Completed and Trash.
Type to search. A Create row appears only when the query doesn’t exactly match an existing todo. Enter on that row adds it; Enter on a todo cycles status.
F2 or Ctrl+E renames the selected todo. The name is selected so you can type over it; Enter saves, Esc cancels.
Delete moves a todo to Trash. Ctrl+T opens Trash. Backspace only edits search.
Trash
| Key | Action |
|---|---|
| Ctrl+T | Toggle Trash |
| Enter / Ctrl+R | Restore selected |
| Delete / Ctrl+D | Delete forever |
| Shift+Delete | Empty Trash |
| Esc | Leave Trash (or clear search first) |
Edit statuses
~/.config/omarchy/ed.omatodo.json — Ctrl+, from the popup opens it.
{
"statuses": [
{ "id": "backlog", "label": "Backlog", "color": "grey", "done": false },
{ "id": "blocked", "label": "Blocking", "color": "blue", "done": false },
{ "id": "waiting", "label": "Waiting", "color": "orange", "done": false },
{ "id": "completed", "label": "Completed", "color": "green", "done": true }
]
}
color is a name from the active theme’s colors.toml (grey, blue, orange, green, muted, accent, …). Those follow omarchy theme set …. done: true drops that status from the bar count.
Other keys
| Key | Action |
|---|---|
| type | Search; Create row if no exact match |
| F2 / Ctrl+E | Rename selected todo |
| Enter | Save rename, create, cycle status, or restore |
| Shift+Enter | Cycle status backwards |
| Up / Down | Move |
| Delete | Move to Trash |
| Ctrl+T | Open / leave Trash |
| Esc | Cancel rename, clear search, leave Trash, or close |
Todos: ~/.local/state/omarchy/ed.omatodo.json (todos + trash).
License
MIT. See LICENSE.