gordon-deng53 downloadsA linear year planner: see all 12 months at once, create events from notes, and import Google Calendar via ICS.
An Obsidian plugin that shows your whole year at a glance: 12 month rows, pastel event bars, Linear / Stacked / Column / Col-Stack layouts, click or drag to create notes, an event detail popover, and Google Calendar import via ICS.

VaultFolder/.obsidian/plugins/linear-year-calendar/.manifest.jsonmain.jsstyles.cssIgnore GitHub’s auto-generated Source code zip/tar — that is the whole repository, not the plugin install package. Obsidian only uses the three files above.
Use the calendar ribbon icon, or run Open Linear Year Calendar from the command palette.
Google Calendar is the source of truth for imported events. Obsidian is for local planning.
| Kind | Folder | In Obsidian |
|---|---|---|
| Local planning | Calendar/<CalendarName>/ |
Create, edit, delete |
| Google ICS | Calendar/google/<CalendarName>/ |
View only; open the day in Google Calendar |
Click or drag creates notes in the Default calendar name folder (settings). In the create/edit modal, pick a local calendar from the dropdown, or choose Other… to name a new one (Google calendars are not listed). Changing calendar on edit moves the note into that folder. Filters group Local vs Google.
| Action | What happens |
|---|---|
| Click a day | Create a one-day local event note |
| Drag across days | Create a multi-day local event note (live range preview) |
| Click a local event bar | Detail popover (open note / edit / delete) |
| Click a Google event bar | Read-only popover; Google opens that day in Google Calendar |
| Hover an event bar | Tooltip with title, dates, day count |
| Today (next to year arrows) | Jump to the current year and center on today |
| Display | Switch Stacked / Linear / Column / Col-Stack |
| Filters | Local and Google sections; Show all when some are hidden |
| Search | Filter bars by title |
| Year arrows | Move year |
Local events are Markdown notes with YAML frontmatter:
---
start: 2026-09-07
end: 2026-09-15
color: "#E7A989"
calendar: Personal
---
# Home Office Makeover
Optional description lives in the note body.
All-day events only skips timed meetings when enabled. Timed Google events still import as one-day bars when that setting is off.
Imported events are written under Calendar/google/<calendar-name>/, keyed by ics-uid + start date so refreshes update instead of duplicating. Do not edit those notes in Obsidian — change them in Google and refresh.
Public ICS URLs work too (webcal / https). webcal:// is rewritten to https:// automatically.
If you previously imported into Calendar/<name>/ (without google/), refresh will write to the new path; you can delete the old ICS notes manually.
Open Settings → Linear Year Calendar.
| Setting | What it does |
|---|---|
| Events folder | Root folder for calendar notes (default Calendar). Local calendars use <folder>/<Name>/; Google imports use <folder>/google/<Name>/. |
| Default calendar name | Local calendar used when you click or drag to create an event. |
| Week starts on | Sunday or Monday — used by Stacked and Col-Stack so weekends line up. |
| Default view | Layout used when you open the year view. |
| All-day events only | When on, skip timed Google meetings on ICS refresh. |
| Google US holidays | Optional holiday feed, with a color picker. Refresh ICS after enabling. |
| Google calendars | Add, enable/disable, color, and test ICS sources. Names map to Calendar/google/<Name>/. |
Use Refresh ICS calendars (toolbar or command) after changing ICS sources. The settings page shows the last refresh time and per-calendar results when available.
BYDAY and EXDATE). Some monthly patterns and edge cases may still land wrong or incomplete.