Linear Year Calendar

approved

by gordon-deng

A linear year planner: see all 12 months at once, create events from notes, and import Google Calendar via ICS. - This plugin has not been manually reviewed by Obsidian staff.

53 downloadsUpdated 9d agoMIT

Linear Year Calendar

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.

screenshot


Install

Community plugins (once listed)

  1. Open Obsidian → Settings → Community plugins.
  2. Turn Restricted mode off if it is on.
  3. Browse → search Linear Year Calendar → Install → Enable.

Manual install (from a GitHub release)

  1. Create VaultFolder/.obsidian/plugins/linear-year-calendar/.
  2. From the latest release, download these three assets into that folder:
    • manifest.json
    • main.js
    • styles.css
  3. Enable Linear Year Calendar under Community plugins.

Ignore 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.


Open the view

Use the calendar ribbon icon, or run Open Linear Year Calendar from the command palette.


How it works

Google Calendar is the source of truth for imported events. Obsidian is for local planning.

KindFolderIn Obsidian
Local planningCalendar/<CalendarName>/Create, edit, delete
Google ICSCalendar/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.

ActionWhat happens
Click a dayCreate a one-day local event note
Drag across daysCreate a multi-day local event note (live range preview)
Click a local event barDetail popover (open note / edit / delete)
Click a Google event barRead-only popover; Google opens that day in Google Calendar
Hover an event barTooltip with title, dates, day count
Today (next to year arrows)Jump to the current year and center on today
DisplaySwitch Stacked / Linear / Column / Col-Stack
FiltersLocal and Google sections; Show all when some are hidden
SearchFilter bars by title
Year arrowsMove year

Layouts

  • Linear — day 1 of every month is in the first column.
  • Stacked — months are offset so Sundays (or Mondays) stack in the same columns.
  • Column — months sit side by side with days top to bottom; events appear inside each month on their days.
  • Col-Stack — like Column, but months are weekday-aligned so weekends line up horizontally across the year.

Event notes

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.

Google Calendar via ICS

  1. In Google Calendar, open Settings.
  2. Under Settings for my calendars, select a calendar.
  3. Open Integrate calendar.
  4. Copy Secret address in iCal format.
  5. In Obsidian: Settings → Linear Year Calendar → Add under Google calendars.
  6. Paste the URL, set a name and color.
  7. On the year view, click the refresh icon (or command Refresh ICS calendars).

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.


Settings

Open Settings → Linear Year Calendar.

SettingWhat it does
Events folderRoot folder for calendar notes (default Calendar). Local calendars use <folder>/<Name>/; Google imports use <folder>/google/<Name>/.
Default calendar nameLocal calendar used when you click or drag to create an event.
Week starts onSunday or Monday — used by Stacked and Col-Stack so weekends line up.
Default viewLayout used when you open the year view.
All-day events onlyWhen on, skip timed Google meetings on ICS refresh.
Google US holidaysOptional holiday feed, with a color picker. Refresh ICS after enabling.
Google calendarsAdd, 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.


Known limits

  • Google / ICS events are read-only in Obsidian. Edit them in Google, then refresh.
  • Timed Google events render as one-day bars (not hour blocks).
  • ICS recurrence covers common Google series (including weekly BYDAY and EXDATE). Some monthly patterns and edge cases may still land wrong or incomplete.
  • Recurring series are capped when expanding occurrences so a bad rule cannot flood the vault.
  • The plugin reads Markdown notes under your events folder (and related vault paths) to draw the year grid.

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.