A sleek, minimal, and keyboard-driven desktop application for quickly adding tasks to Todoist.
Capturist is designed for Linux and lives in your system tray. It can be summoned with a global shortcut, allowing you to capture tasks without breaking your workflow.
- Global Shortcut: Open the quick-add dialog from anywhere with a configurable global shortcut.
- System Tray Icon: Lives discreetly in your system tray for easy access.
- Launch at Startup: Automatically start with your system so it's always ready. (In Snap environment, you can manage it via system/Snap settings itself).
- Native Notifications: Get native desktop notifications confirming your task was added with a corresponding link to Todoist web app.
- Secure: Your Todoist token is securely stored in the operating system's native keyring.
- Modern & Fast: Built with Rust and Tauri for a small memory footprint and a snappy, native feel.
- Familiar UI: Based on Todoist User interface for a familiar look and feel.
- Natural Language Detection: Todoist quick-add keywords are supported.
snap install capturistDownload the .flatpak bundle from Releases and run:
flatpak install capturist.flatpakYou can also download .deb and .rpm files from the Releases page.
Note: Support for AppImage and AUR may be added in the future based on community requests.
Interested in contributing or running the latest development version? Here’s how to get started.
- Node.js and npm
- Rust
- Angular CLI:
npm install -g @angular/cli - System dependencies for Tauri. Follow the official Tauri guide for your OS.
To run the application with hot-reloading for both the frontend and backend:
npm run tauri devTo build and bundle the application for production:
npm run tauri buildThe resulting binaries will be available in the src-tauri/target/release directory.
This project uses a modern stack to deliver a fast, native-like experience.
- Core Technologies:
- Frontend: Angular with Angular Material and Tailwind CSS.
- Backend: Rust with the Tauri framework.
- Key Conventions:
- The Angular application is fully zoneless and uses Signals for state management, resulting in optimal performance.
- The backend handles the core OAuth2 flow and secure API interactions.
- Communication between the frontend and backend is done via Tauri's secure IPC (Commands and Events).
- Code quality is maintained with Cargo Check, Prettier and ESLint.
Security is a top priority for Capturist.
- The OAuth2
stateparameter (for CSRF protection) is generated and verified entirely on the backend. - To let Capturist securely save the Todoist API token in the OS native Keyring, you should allow it in sandboxed environments:
- Snap: Run
snap connect capturist:password-manager-service
- Snap: Run
- A strict Content Security Policy (CSP) is configured in
tauri.conf.jsonto mitigate cross-site scripting (XSS) risks.
Pull requests are welcome! For major changes, please open an issue first to discuss what you would like to change. Please ensure to add/update tests as appropriate.
Before submitting, please run npm run lint and npm run format:check to ensure your code adheres to the project's style.
This project is licensed under the MIT License. See the LICENSE file for details.
Capturist is an unofficial Todoist client and is not affiliated with or endorsed by Doist.
