A minimalist menu-bar to-do list & calendar for macOS — fast, private, and always one click away.
English · 简体中文
待办 · Todos lives in your macOS menu bar. Left-click the tray to pop a tidy to-do list right under the icon; the second tray icon shows today's date and opens a Chinese-lunar calendar. No Dock icon, no window clutter — it stays out of the way until you need it, and a global hotkey brings it up from anywhere.
It started as an Electron app and was rewritten in Tauri v2: the bundle shrank from ~100 MB to a ~1.8 MB .dmg, with a fraction of the memory footprint and a native macOS WebView.
- 🧷 Menu-bar native — two tray icons (to-do list + calendar). Left-click pops the window directly under the icon; right-click opens the menu. No Dock icon (accessory app).
- ✅ Frictionless to-dos — group by category / priority / time, inline editing, one-tap status, and an Achievements view with a completion trend chart.
- 🍅 Built-in Pomodoro — turn any task into a focus session; the capsule timer floats above full-screen apps.
- 📅 Calendar with Chinese lunar dates — solar + lunar days, public holidays and 休/班 (rest/work) badges, today highlighted.
- ⌨️ Global hotkey —
⌘ ⇧ Utoggles the list from any app. - 🌗 Light / Dark / System theme — switch instantly; every window follows.
- 🌍 8 languages — 简体中文, English, 日本語, 한국어, Español, Français, Deutsch, Русский. The tray text and menus localize too.
- 🚀 Launch at login — optional, one toggle in Settings.
- 🪟 Split screen — snap the active window of any app to the left/right half, maximize, or restore it — with customizable hotkeys (default
⌘⌃ + arrows) and an adjustable gap. Requires macOS Accessibility permission. - ☁️ Private by design — your data is plain JSON in your iCloud Drive. No account, no telemetry, no servers.
| To-dos | Calendar |
|---|---|
![]() |
![]() |
| Dark mode | Settings |
|---|---|
![]() |
![]() |
Grab the latest .dmg from the Releases page, open it, and drag 待办.app to Applications.
The app isn't notarized yet. On first launch, right-click the app → Open, or allow it under System Settings → Privacy & Security.
# Prerequisites: Rust (https://rustup.rs) and the Tauri CLI
cargo install tauri-cli --version "^2.0"
git clone https://github.com/<polimao>/todos.git
cd todos
cargo tauri build # Chinese edition → product name 「日行」
# International edition → product name "RiXing"
cargo tauri build --config src-tauri/tauri.international.conf.json
# both → src-tauri/target/release/bundle/{dmg,macos}/Both editions ship all 8 UI languages and auto-detect the language from the system; they differ only in the bundle/product name (
日行vsRiXing). The marketing site (docs/) auto-selects Chinese + the日行package in China (by timezone) and the visitor's language + theRiXingpackage elsewhere, with a manual language switcher in the nav.
| Action | How |
|---|---|
| Show / hide the to-do list | Left-click the 待办 tray icon, or press ⌘ ⇧ U |
| Open the calendar | Left-click the date tray icon |
| Open Settings / Quit | Right-click either tray icon |
| Change language / theme / autostart | The Settings window |
Right-click a tray icon → Settings:
- Launch at login — start 待办 automatically when you log in.
- Language — 8 languages, or follow the system.
- Theme — Light, Dark, or follow the system.
- Split screen — enable it, set the gap between windows/edges, and rebind each shortcut (click a key field and press the combo). First enable triggers the macOS Accessibility prompt.
Changes apply live across every window and the menu-bar text.
| Shortcut | Action |
|---|---|
⌘ ⌃ ← |
Left half of the current screen |
⌘ ⌃ → |
Right half |
⌘ ⌃ ↑ |
Maximize (fill the screen) |
⌘ ⌃ ↓ |
Restore the previous size |
All four are user-rebindable, and the gap is the basis for every snapped size.
The frontend is plain static HTML/CSS/JS (no bundler / build step); the backend is Rust.
cargo tauri dev # run with hot-reload of the Rust side
# or: pnpm dev / pnpm build (aliases for the cargo tauri commands)src/ Frontend (Tauri frontendDist — static, no build step)
index.html renderer.js style.css To-do window
calendar.html calendar.js Calendar window (lunar via vendored lunar.js)
settings.html settings.js Settings window
i18n.js 8-language dictionary + helpers
ui-common.js Theme + language bootstrap, cross-window sync
theme.css CSS variables + dark overrides
src-tauri/ Rust backend
src/main.rs Windows / tray / hotkey / Pomodoro / storage / i18n
tauri.conf.json Borderless + transparent + menu-bar accessory
capabilities/ Frontend IPC permissions
- Tray, localized — one
TrayIconBuilderper icon; the title, menu (Settings/Quit) and date format are localized from the saved language. Changing language rebuilds the trays on the main thread. - i18n —
i18n.jsholds the dictionaries;ui-common.jsresolves the language (explicit or system), translates[data-i18n]nodes, and syncs all windows via a Tauri event. - Theme — a
data-themeattribute on<html>drives CSS variables; System is resolved withprefers-color-scheme. - Auto-hide & positioning — windows hide on blur (except during Pomodoro) and pop centered beneath the clicked tray icon.
| Electron (old) | Tauri v2 (now) | |
|---|---|---|
.dmg size |
~100 MB | ~1.8 MB |
| Runtime | Bundled Chromium | Native macOS WebView |
| Resident memory | High | Much lower |
| Backend | Node | Rust |
Everything stays on your machine. To-dos and settings are stored as JSON — in iCloud Drive when it's enabled (so your Macs stay in sync), otherwise in a local App Support folder:
# iCloud Drive enabled:
~/Library/Mobile Documents/com~apple~CloudDocs/Todos/.todos_data.json
~/Library/Mobile Documents/com~apple~CloudDocs/Todos/.todos_settings.json
# iCloud Drive off:
~/Library/Application Support/com.limao.todos/.todos_data.json
~/Library/Application Support/com.limao.todos/.todos_settings.json
No accounts, no analytics, no network calls. (Legacy ~/.todos_*.json files are migrated, then removed, on first launch.)
- Notarized / signed builds
- Reminders & notifications
- Deeper localization of in-app content
- Windows / Linux builds
Issues and PRs are welcome. For larger changes, please open an issue first to discuss what you'd like to change.
MIT © 李貌



