A lightweight, native macOS menu bar app for Google Tasks.
TaskMenu brings Google Tasks to the macOS menu bar with a fast, native SwiftUI interface. It stays out of the Dock, opens as a compact popover, and keeps everyday task management close without pulling you out of your work.
- Website: taskmenu.crazytan.dev
- Privacy Policy: taskmenu.crazytan.dev/privacy
- Support: taskmenu.crazytan.dev/support
- Menu bar-first design with no Dock icon or main window in normal launches
- Google sign-in with OAuth 2.0 and PKCE
- Quick add, inline filtering, list switching, and refresh from the popover
- Create, edit, complete, and delete Google Tasks
- Due dates, subtasks, and local due-date reminders
- Secure token storage in the macOS Keychain
- Optional launch at login
To run TaskMenu:
- macOS 14.4 or later (Sonoma)
To build from source:
- Xcode 16 or later
- XcodeGen
- A Google Cloud project with the Google Tasks API enabled
- Google OAuth iOS credentials for the app bundle ID
Download the signed and notarized DMG from the latest GitHub release.
-
Clone the repository:
git clone https://github.com/crazytan/TaskMenu.git cd TaskMenu -
Create or configure a Google Cloud project:
- Enable the Google Tasks API
- Create an iOS OAuth client in Google Cloud Console for bundle ID
dev.crazytan.TaskMenu
-
Copy the example config and add your Google OAuth credentials:
cp Config.xcconfig.example Config.xcconfig
Fill in
GOOGLE_CLIENT_IDandGOOGLE_REDIRECT_SCHEMEinConfig.xcconfig. -
Generate the Xcode project:
xcodegen generate
-
Open
TaskMenu.xcodeprojin Xcode and build the app.
- Swift 6
- SwiftUI
- XcodeGen-generated project
- Apple frameworks only, with zero third-party dependencies
- Strict concurrency enabled
Run a focused test slice with:
xcodebuild test -project TaskMenu.xcodeproj -scheme TaskMenu \
-configuration Debug \
-only-testing:TaskMenuTests/AppStateTestsTaskMenu uses the public Google Tasks API, which is smaller than the Google Tasks and Google Calendar web interfaces. The API can manage task lists and core task fields such as title, notes, completion status, ordering, subtasks, and due dates, but not every first-party UI feature is exposed as a public read/write field.
For reference, Google documents the public task resource in the Tasks API reference, while the web app can also create tasks with features like date/time, deadlines, repeating schedules, and notifications in Google Tasks Help.
The API's due field is date-only. Google accepts it as an RFC 3339 timestamp, but discards the time portion when the due date is set, and the API cannot read or write the time a task is due. TaskMenu therefore syncs calendar days, not task times.
No. Google Tasks and Google Calendar can send their own notifications for tasks, including tasks with a date and time. TaskMenu can only see the date-only value exposed by the API, so its due-date reminders are local macOS notifications scheduled by TaskMenu. They do not create or edit Google Tasks notification settings.
Not currently. Google Tasks and Google Calendar can create repeating tasks, but the public Tasks API task resource does not expose a recurrence rule field that TaskMenu can read and write. Google's API documentation also calls out special restrictions for recurrent tasks in task moves. TaskMenu treats repeating tasks conservatively and does not create or edit repeat schedules.
See Google's repeating tasks help and the Tasks API move method.
Stars are available in Google's Tasks UI, but starred status and the Starred smart list are not fields on the public Task or TaskList resources. Without an official API field, TaskMenu cannot reliably sync, set, or filter starred tasks.
See Google's starred tasks help.
Google's web apps can create tasks from other Workspace products. The Tasks API exposes some of that context as read-only links or assignment metadata, and assigned tasks from Docs or Chat are not returned by default unless an API client explicitly requests them. TaskMenu currently focuses on regular Google Tasks lists, so some source links, assignment details, and shared-task behaviors may be unavailable or read-only.
See the tasks.list reference and Tasks API usage limits.
Contributions are welcome. If you have a bug report, feature request, or a focused improvement, open an issue or submit a pull request.
Issues and feature requests: GitHub Issues
Maintainer release instructions live in docs/RELEASING.md.
GNU GPLv3

