Skip to main content

Todo Snake

Todo snake

CI Socket Release License Python Qt Linux macOS Windows

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

App screenshot

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 VTODO in 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), Apache mod_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>.zip for Intel and Apple Silicon (.app bundle)
  • Linux — todo-snake-<version>-x86_64.AppImage — chmod +x and 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

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)

Source distribution for todo-snake 0.3.1
File Size Uploaded
todo_snake-0.3.1.tar.gz 131.1 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for todo-snake 0.3.1
File Interpreter ABI Platform
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

Release history Release notifications | RSS feed

This release

0.3.1 This release

2 release files

0.3.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page