UniCalendar
approvedby yinshaohua
This plugin has not been manually reviewed by Obsidian staff. A unified calendar view syncing events from Google Calendar, CalDAV, and ICS feeds into one beautiful interface.
UniCalendar
A unified calendar view for Obsidian that aggregates events from Google Calendar, CalDAV servers, and ICS feeds into a single month view — with Chinese lunar calendar, solar terms, and public holiday annotations.

Features
- Unified month view — see all your calendar sources in one place, color-coded by source
- Google Calendar sync — OAuth 2.0 PKCE flow, no server required; supports multiple calendars per account
- CalDAV sync — connect to Nextcloud, iCloud, Fastmail, or any CalDAV-compatible server
- ICS feed sync — subscribe to any public or private
.icsURL - Chinese lunar calendar — lunar dates, traditional festivals (春节, 端午, 中秋…), and 24 solar terms displayed in each cell
- Public holiday overlay — statutory holidays and adjusted workdays (补班) sourced from holiday-cn
- Event deduplication — events shared across sources are shown once, with configurable source priority
- Auto-sync — configurable sync interval (default 30 minutes); manual sync available via command palette
- Mobile compatible — works on iOS and Android (
isDesktopOnly: false)
Installation
From Obsidian community plugins (recommended)
- Open Settings → Community plugins → Browse
- Search for UniCalendar
- Select Install, then Enable
Manual installation
- Download
main.js,manifest.json, andstyles.cssfrom the latest release - Copy the three files to
<Vault>/.obsidian/plugins/uni-calendar/ - Reload Obsidian and enable the plugin in Settings → Community plugins
Configuration
Open Settings → UniCalendar to configure calendar sources.
Add a Google Calendar source
- Select Add source → Google Calendar
- Enter your Google OAuth client ID and client secret (see Google Cloud Console)
- Select Authorize — a browser window opens for the OAuth flow
- After authorization, select which calendars to include
Add a CalDAV source
- Select Add source → CalDAV
- Enter the server URL, username, and password
- Select Discover calendars to list available calendars
Add an ICS feed
- Select Add source → ICS feed
- Paste the ICS URL
- Optionally set a display name and color
Other settings
| Setting | Default | Description |
|---|---|---|
| Sync interval | 30 min | How often to auto-sync all sources |
| Show lunar calendar | On | Display lunar dates and festivals in month cells |
| Show holidays | On | Overlay public holiday and workday annotations |
| Month overflow mode | Collapse | How to handle cells with more events than fit |
Usage
- Select the calendar icon in the ribbon to open the calendar view
- Use the command palette (
Ctrl/Cmd+P) and search for Open calendar - Navigate months with the
<and>arrows in the view header - Select any event to see its full details
Privacy
UniCalendar operates entirely locally. Calendar credentials are stored in your vault's plugin data file (<Vault>/.obsidian/plugins/uni-calendar/data.json). No data is sent to any third-party service other than the calendar providers you explicitly configure. Holiday data is fetched from the jsdelivr CDN on first load and cached locally.
Development
# Install dependencies
npm install
# Watch mode (auto-recompile on save)
npm run dev
# Production build
npm run build
# Run tests
npm test
# Lint
npm run lint
Copy main.js, manifest.json, and styles.css to <Vault>/.obsidian/plugins/uni-calendar/ and reload Obsidian to test locally.
License
For plugin developers
Search results and similarity scores are powered by semantic analysis of your plugin's README. If your plugin isn't appearing for searches you'd expect, try updating your README to clearly describe your plugin's purpose, features, and use cases.