BusyMax is a Linux desktop calendar and task manager built with Flutter.
It brings calendar events and tasks into a native-feeling Linux desktop interface. BusyMax connects directly to Google, Microsoft, Apple iCloud Calendar, and Nextcloud. Apple Reminders is not supported.
Month view with calendars, tasks, and event details.
- Linux desktop app built with Flutter.
- Calendar views for day, week, month, year, and agenda planning.
- Task creation with lists, start/due dates, reminders, repeat options, subtasks, status, progress, priority, categories, location, and URL.
- Nextcloud task-list creation/rename/delete, recursive task duplicate/delete, raw iCalendar export, clear-completed, and cross-list subtree moves.
- Event editing with calendar selection, time controls, repeat rules, and reminders.
- Tray shortcut for opening the main Agenda view.
- Direct integrations with Google Calendar, Google Tasks, Microsoft Calendar, Microsoft To Do, Apple iCloud Calendar, Nextcloud Calendar, and Nextcloud Tasks.
- Offline-first local cache, conditional DAV writes, recurrence exceptions, alarms, and explicit conflict handling for CalDAV accounts.
- Flutter SDK
- GTK 3 and libhandy development packages (
libgtk-3-devandlibhandy-1-devon Ubuntu/Debian) GOOGLE_OAUTH_CLIENT_IDandGOOGLE_OAUTH_CLIENT_SECRET; see Google setupMICROSOFT_OAUTH_CLIENT_ID, see Microsoft Setup
Apple and Nextcloud do not require compile-time client credentials:
- Apple iCloud Calendar setup requires two-factor authentication and an Apple app-specific password.
- Nextcloud setup requires an HTTPS server and completes authorization in the default browser.
Register the development launcher once so GNOME can associate BusyMax's native Wayland windows with its desktop icon. The helper is idempotent and defaults to the Flutter debug bundle:
tools/install_linux_dev_desktop.shThen run BusyMax normally:
flutter run -d linux \
--dart-define=GOOGLE_OAUTH_CLIENT_ID=<google-client-id> \
--dart-define=GOOGLE_OAUTH_CLIENT_SECRET=<google-secret-if-needed> \
--dart-define=MICROSOFT_OAUTH_CLIENT_ID=<microsoft-client-id>Use tools/install_linux_dev_desktop.sh --uninstall to remove the development
launcher. Remove it before testing an installed Snap so the user-level launcher
does not take precedence; packaged Snaps register their own launcher.
The native Send feedback form in the About dialog sends JSON to
POST https://busystack.org/api/feedback. Every submission contains a new
submission UUID, the application identifier busymax, the application version
and build number, the linux platform identifier, category, subject, message,
and optional reply email. A successful response has this form:
{ "id": "server-reference-id" }The optional technical-details checkbox is off by default. When the user explicitly enables it, BusyMax adds only the Linux operating-system version and application locale. BusyMax does not attach logs, account or calendar data, file names, screenshots, environment variables, or other diagnostics.
For local website development, override the endpoint through the existing compile-time configuration mechanism:
flutter run -d linux \
--dart-define=BUSYSTACK_FEEDBACK_ENDPOINT=http://127.0.0.1:8090/api/feedbackThe local Snap helper accepts the same value with
--dart-define BUSYSTACK_FEEDBACK_ENDPOINT=http://127.0.0.1:8090/api/feedback.
No API, CAPTCHA, or other private server credential is used by the desktop
application.
The provider capability matrix lists the features and limitations of each integration. Maintainers can use the live-provider test guide for opt-in Nextcloud and iCloud integration tests.
See Snap Build and Beta Release for OAuth build configuration, canonical Snapcraft packaging, local installation, artifact verification, Store review, and beta release instructions.







