Skip to main content

Todo Snake

CI Socket Release License Python Qt Linux macOS Windows Ruff

Todo snake

A clean PySide6 TODO app with system tray integration. Tasks are stored in a local SQLite database, and the app hides to the system tray instead of exiting when the window is closed.

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

User-level XDG install (recommended, no root):

./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.0

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.0
File Size Uploaded
todo_snake-0.3.0.tar.gz 142.0 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for todo-snake 0.3.0
File Interpreter ABI Platform
todo_snake-0.3.0-py3-none-any.whl Python 3 none any Details

Total release size: 273.1 kB

Release files / todo_snake-0.3.0.tar.gz

Download URL todo_snake-0.3.0.tar.gz
Size 142.0 kB
Tags Source
SHA-256 checksum
How to use checksums
c7853f7cba4fa1c591df6fa771a10b7103948a35381ee52d9772e9be7196a90e
BLAKE2b-256 checksum
How to use checksums
c291e296d169cb218c5070dd7111612845cf2eb6fb096a0552b4133bdc1b88ce
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.0-py3-none-any.whl

Download URL todo_snake-0.3.0-py3-none-any.whl
Size 131.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
d582904fdba9809ed3d940c77d986eb26548ec57027b39a20a0c54668b7a922f
BLAKE2b-256 checksum
How to use checksums
3a754a77feaef4f6ef6c148edd1f5679e375faa4273ce8f3cc3040ac1e544a3b
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

0.3.1

2 release files

This release

0.3.0 This release

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