Todo Snake
Eat your todos. 🐍 Todo Snake is a fast, simple task manager that just works: a clean UI living in the system tray — add a task, attach a file, set a reminder or a repeat rule, tick it off, done. No account and no cloud required — tasks stay in a local SQLite database. Want them everywhere? Sync to your own Nextcloud or any CalDAV server.
Features
- Add, edit, delete and mark tasks done (double-click to edit)
- Status (open / in progress / done), an optional start date, all-day due dates and a per-task reminder lead time
- Recurring tasks (daily / weekly / monthly / yearly), shown with an ∞ in the list; completing one advances it to the next occurrence
- Due date and time per task, with a persistent reminder window (snooze 2/5/10 min) and a blinking tray icon
- Filter by status, full-text search, priorities and due dates
- Attachments: files per task, stored locally and opened with one click (uploaded to Nextcloud Files when a Nextcloud account is set up). A Files column marks tasks with attachments; the list shows image previews and type icons.
- Import / export as JSON
- Optional cloud sync via WebDAV or CalDAV (see Sync)
- System tray with notifications ("All done!")
- Single-instance enforcement
- Translatable UI (German included; follows the system locale, override with
TODO_SNAKE_LANG) - XDG-compliant data directory
Sync
Tasks can sync to your own cloud — no account with a third party is required.
- Nextcloud (Tasks) — syncs with the Nextcloud Tasks app: every task is
a
VTODOin the task calendar you choose. Use Connect to Nextcloud… in the account dialog: paste the full calendar URL (e.g.https://cloud.example.com/apps/tasks/calendars/tasks) and sign in via Login Flow v2 (SSO and 2FA included) — one field is enough; a calendar that does not exist yet is created on the first sync. No shell access needed. - CalDAV — sync against any other CalDAV server: Baïkal (sabre/dav),
Radicale, fruux or Vikunja. Paste the full calendar collection URL, e.g.
https://cloud.example.com/remote.php/dav/calendars/alice/tasks/. - WebDAV (generic) — keep the sync state as a JSON document on any plain
WebDAV server: rclone (
rclone serve webdav), Apachemod_dav, ownCloud, …
Configure accounts under Settings → Sync accounts. Credentials are sent as
HTTP Basic over TLS (plain http:// is only allowed for localhost). Conflicts
are resolved per task with last-write-wins; deletions propagate as tombstones.
Each account has a checkbox in the list: uncheck it to disable the account
without deleting it (a disabled account is skipped by every sync, manual
included).
Attachment files live in Nextcloud under Files → Todo Snake/Attachments/. Removing an attachment deletes its file on the next sync, and every sync also sweeps the task folders for files nothing references any more (so leftovers from earlier versions disappear on their own). Clean up orphaned files… does the same for the whole folder on demand, after a confirmation.
Trigger a sync anytime with the Sync now button in the toolbar (disabled while no account is enabled), or turn on periodic sync under Settings → Sync behavior.
Install
Prebuilt binaries are attached to every release — no Python needed:
- Windows —
todo-snake.exe(one self-contained file) - macOS —
todo-snake-<version>-macos-<arch>.zipfor Intel and Apple Silicon (.appbundle) - Linux —
todo-snake-<version>-x86_64.AppImage—chmod +xand run
Prefer to run from source? The user-level XDG install (no root) is just as easy:
./install.sh
Launch from the application menu, or run:
~/.local/share/todo-snake/venv/bin/todo-snake
Other options (system-wide, repo-local venv, manual pip) and uninstall instructions: docs/INSTALL.md.
Requirements
Python 3.10+ on Linux with a Qt platform (X11 or Wayland), and PySide6 6.11.2 (Qt 6.11) or newer within 6.11. Everything else is the standard library — the sync does not pull in any HTTP or iCalendar dependency.
Development
Setup, running the tests and project structure: docs/DEVELOPMENT.md. To run from source:
python main.py
License
Metadata
Release files for todo-snake 0.3.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| todo_snake-0.3.1.tar.gz | 131.1 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| todo_snake-0.3.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 250.9 kB
Release files / todo_snake-0.3.1.tar.gz
| Download URL | todo_snake-0.3.1.tar.gz |
|---|---|
| Size | 131.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
860bfd473ec676085ea192c139447dc0c96eab5a83e784eaf2a6462cff21383f
|
|
BLAKE2b-256 checksum How to use checksums |
5fd07b91c31126c3c684c9639807f447e3531134d2fef3934a15825674a13fcb
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / todo_snake-0.3.1-py3-none-any.whl
| Download URL | todo_snake-0.3.1-py3-none-any.whl |
|---|---|
| Size | 119.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
79d110ea9c2300dc881688db30e6a42addb190cf1d4da5be310f30da33f4af91
|
|
BLAKE2b-256 checksum How to use checksums |
4a9943e5c6a65baac22ae3fbe3ca241526e960acd92bacb989136561c6377101
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|