A clean task list on your Linux Mint / Cinnamon desktop. Same architecture and polish as Prompt Vault — dark glass panel, filter chips, search, JSON backup — built for getting things done.
- Tasks — title, category, tags, notes, due date, priority (None / Low / Medium / High).
- Search — title, category, tags, notes, and due date as you type.
- Filter — Active / Done / All, ★ starred, or category with one click.
- Complete — checkbox or click the task row (green flash confirms it).
- Due dates — Due today, Overdue · 3 days, etc. Overdue open tasks get a red stripe.
- Priorities — color-coded text badges (never color alone).
- Progress — open count in the header plus “2 / 5 done” summary.
- Duplicate, edit, delete — edit opens a proper modal dialog; optional delete confirmation.
- Backup & restore — export timestamped JSON; import merge or replace; rolling auto-backup.
- Portable — point the data folder at Dropbox, Nextcloud, a git repo, etc.
The desklet is organised in four labelled areas anyone can scan at a glance:
- Find — search box
- Show — filter chips (Active, Done, All, starred, categories)
- Tasks — scrollable list
- Manage — Add, Export, Import, Folder
Desklets live on the desktop layer, which normally never receives the keyboard. Todo List uses the same compositor grab as Prompt Vault for the search box; add/edit opens a Cinnamon modal dialog with its own focus handling.
- Esc clears the search (first press) or releases the keyboard (second press).
- Click outside the desklet releases the keyboard immediately.
| Shortcut | Action |
|---|---|
Ctrl+A |
Select all |
Ctrl+C / Ctrl+X |
Copy / cut selection |
Ctrl+V / Shift+Insert |
Paste |
| Middle-click | Paste primary selection (X11) |
| Right-click | Copy / Paste context menu |
Esc |
Clear search / release keyboard |
In the add/edit dialog: Tab between fields, Ctrl+Enter to save.
- Self-contained high-contrast surface legible on any wallpaper (WCAG 2.1 AA on panel background).
- Status uses icon + text — never color alone.
- Due dates and priorities always show text labels.
- 2px focus rings on every interactive control; borders are 2px at rest so focus does not shift layout.
- Adjustable width and list height in settings.
- Data directory created
0700, files written0600. - Import/load capped at 10 MB and 5 000 tasks; corrupt
tasks.jsonis quarantined, never silently deleted. - All fields sanitized and length-limited on load and import; duplicate IDs are reassigned.
- Custom data folder is a deliberate power-user feature (same as Prompt Vault).
./install.shThen right-click the desktop → Add Desklets → Todo List → Add.
Reload Cinnamon with Ctrl+Alt+Esc if it does not appear.
Pure helper logic (dates, tags, sanitization):
node tests/pure-helpers.test.mjsDefault location:
~/.local/share/todo-list@alex/
├── tasks.json
├── tasks.auto-backup.json
└── tasks-backup-YYYY-MM-DD_HHMMSS.json
Place import.json in the data folder, then use Import from the toolbar.
rm ~/.local/share/cinnamon/desklets/todo-list@alexYour data in ~/.local/share/todo-list@alex/ is left untouched.
Copyright © 2026 Alexander Mäule.
Todo List is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License v3.0 or later.
Alexander Mäule — software-by-design.de · alex@software-by-design.de · LinkedIn
{ "id": "uuid", "title": "string", "category": "string", "tags": ["string"], "notes": "string", "dueDate": "YYYY-MM-DD | null", "priority": "none | low | medium | high", "completed": false, "favorite": false, "createdAt": "ISO-8601", "updatedAt": "ISO-8601", "completedAt": "ISO-8601 | null" }