Skip to content

fasterisk/todotray

Repository files navigation

TodoTray

A lightweight Windows system tray todo app. Click the tray icon to open a compact popup — add tasks, check them off, and stay focused.


Behavior

Tray icon

  • Left-click — show the window (anchored bottom-right, above the taskbar); click again to hide it
  • Right-click — context menu with Quit
  • Click outside the window — auto-hides

Window

  • × button — hides the window (app keeps running in the tray)
  • ⚙ button — opens the settings panel

Adding tasks

  • H / M / L buttons — select priority (High / Medium / Low) before adding a task
  • Press Enter to add
  • Todos are sorted automatically: High → Medium → Low

Editing tasks

  • Click a task title — enters edit mode
    • Rename the task, change notes, and change priority with the H / M / L buttons
    • Click outside or Enter in the title field (moves focus to notes) — saves changes
    • Escape — cancels and reverts all changes

Completing & restoring

  • Click the circle on a task — marks it done; it moves to the "Recently done" section at the bottom
  • Click the checkmark on a recently done task — restores it to the active list

Postponing tasks

  • » button on a task — opens the postpone picker
  • Choose a preset (Tomorrow, 3 days, Next week, 2 weeks, Month) or Custom… to pick any date and time
  • Postponed tasks appear in the Future tab and return to Tasks automatically when the time is reached
  • ↩ button in the Future tab — moves a task back to the active list immediately

History

  • The History tab shows all completed tasks with their completion timestamp
  • Tasks that have notes show a dot indicator — click the item to expand and read the notes

Settings

  • Start with Windows — toggle to launch TodoTray automatically at login
  • Recently done — choose how many completed tasks (0–20) are shown at the bottom of the Tasks tab

Data

  • Todos are persisted to %APPDATA%\com.fasterisk.todotray\todos.json
  • Settings are persisted to %APPDATA%\com.fasterisk.todotray\settings.json

Project structure

todotray/
├── src/                        # React frontend (Vite + TypeScript)
│   ├── App.tsx                 # Main UI — todo list, tabs, settings panel
│   ├── App.css                 # Dark theme styles
│   ├── useTodos.ts             # Todo state management + persistence hook
│   ├── useSettings.ts          # App settings hook (persisted separately)
│   ├── types.ts                # Todo and Priority type definitions
│   ├── index.css               # Global styles and CSS variables
│   └── main.tsx                # React entry point
├── src-tauri/                  # Rust / Tauri backend
│   ├── src/
│   │   ├── lib.rs              # Tray icon, window toggle, autostart commands
│   │   └── main.rs             # Binary entry point
│   ├── icons/                  # App icons + NSIS installer images
│   ├── capabilities/
│   │   └── default.json        # Frontend permission grants
│   ├── Cargo.toml
│   ├── build.rs
│   └── tauri.conf.json         # App config: window, bundle, installer
├── index.html
├── package.json
├── vite.config.ts
└── tsconfig.json

Prerequisites

Only needed once. Run these if not already installed:

winget install OpenJS.NodeJS.LTS
winget install Rustlang.Rustup
winget install Microsoft.VisualStudio.2022.BuildTools

After installing Build Tools, open the Visual Studio Installer, select Visual Studio Build Tools 2022 → Modify, and enable the Desktop development with C++ workload. This provides the MSVC compiler and linker that Rust requires on Windows — the full Visual Studio IDE is not needed.

WebView2 is also required and ships with Windows 11.


Development

Quit the installed app first (right-click tray icon → Quit), then start the dev server with hot reload:

npx tauri dev

The window starts hidden — left-click the tray icon to open it.

Both the dev build and the installed app share the same data files under %APPDATA%\com.fasterisk.todotray\. Do not run both at the same time.


Building the installer

npx tauri build

This produces an NSIS installer at:

src-tauri/target/release/bundle/nsis/TodoTray_<version>_x64-setup.exe

Run the installer to install the app for the current user (no admin rights required). A Start Menu shortcut is created automatically.


Releasing an update

  1. Bump the version in three places:

    src-tauri/tauri.conf.json

    "version": "0.2.0"

    src-tauri/Cargo.toml

    version = "0.2.0"

    package.json

    "version": "0.2.0"
  2. Build the installer:

    npx tauri build
    
  3. Run the new TodoTray_0.2.0_x64-setup.exe — NSIS detects the existing installation and upgrades it in-place. No uninstall step needed.

About

A todo list tool for windows easily accessible in the windows tray bar

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors