Obsidian calendar plugin for writing and organizing periodic notes (daily to yearly). Navigate via command palette or calendar UI. Summarize entries with stickers in calendar view. Streamline planning, reviewing, and reflection.
https://github.com/user-attachments/assets/25b380df-3f15-4492-8119-3d95a7604c9e
{{}}
placeholders for dates and times with support for natural language inputs (e.g., "next friday"), time adjustments, and custom formatting.Command Palette
Access the Command Palette (Cmd/Ctrl + P) and type Periodic notes calendar:
Calendar UI
Periodic notes calendar: Toggle calendar interface
https://github.com/user-attachments/assets/240df1bf-776e-45e5-a247-6bf5ae0bba9c
Add emoji stickers to your calendar entries to quickly visualize note content or mood. There are two ways to add stickers:
From the editor:
Type "#emoji" anywhere in your note (e.g., #π). The emoji will automatically appear as a sticker in the calendar view.
From the calendar:
Stickers appear above note icons in the calendar, providing a quick visual overview without opening the notes.
Create notes for specific dates using natural language expressions:
Periodic notes calendar: Open periodic note from natural language date
next tuesday
or two months from now
Examples of natural language inputs:
https://github.com/user-attachments/assets/f6072da9-71ba-4a60-a74f-b88ad3316e2f
Templates use {{}}
placeholders to dynamically insert dates and times. Each placeholder can include an identifier, optional adjustment, and optional format: {{identifier[Β±adjustment][:format]}}
.
{{title}}
or {{date}}
: Note's date{{time}}
: Current time{{currentdate}}
: Current date and time{{monday}}
through {{sunday}}
: Days of weekSupports any date expression Chrono can parse:
{{tomorrow}}
{{next friday}}
{{2 weeks from now}}
{{end of this month}}
{{5 days ago}}
{{last monday}}
etc
Add/subtract time using Β±n[unit]
:
{{date+1d}} // Add one day
{{monday-1w}} // Subtract one week
Units: y(ears), Q(uarters), M(onths), w(eeks), W(eeks ISO), d(ays), h(ours), m(inutes), s(econds)
Add Moment.js format after colon:
{{date:YYYY-MM-DD}}
{{time:HH:mm}}
{{next friday:dddd, MMMM Do}}
# {{title:dddd, MMMM Do YYYY}}
Created: {{currentdate:HH:mm}}
Week: {{date:w}}
## Planning
Previous: [[{{5 days ago}}]]
Next: [[{{in 2 weeks}}]]
Invalid placeholders remain unchanged for easy debugging. All date expressions respect your locale settings and default formats.
https://github.com/user-attachments/assets/cd209f3c-6b54-4ecd-86fb-a9026081d055
These features ensure effortless organization and allow you to experiment with new formats without losing control, making it simple to manage and update your periodic notes.
Note: Bulk operations are limited to files detected under your provided valid formats.
Open Preview
button. Click it to open a preview panel displaying notes for the currently enabled periods (e.g., day, week, month, quarter, year, or multiple).Switch Locale
command in the command palette to quickly change locales if enabled.The plugin's appearance can be extensively customized through CSS variables and selectors. Here's how to get started:
Tip: Use a code editor like Visual Studio Code or Sublime Text to ensure your CSS is valid and properly formatted.
The plugin uses CSS variables to control colors and styling. All customizations should be wrapped in the #pnc-container selector:
#pnc-container {
/* Background Colors */
--color-background-table-header: transparent;
/* Period Button Background Colors */
--color-background-day-bttn: transparent;
--color-background-week-bttn: transparent;
--color-background-month-bttn: transparent;
--color-background-quarter-bttn: transparent;
--color-background-year-bttn: transparent;
--color-background-weekend: transparent; /* weekend column */
/* UI Element Colors */
--color-dot: var(--text-muted);
--color-arrow: var(--text-muted);
/* Text Colors */
--color-text-header-title: var(--text-normal);
--color-text-table-header: var(--text-muted);
--color-text-today: var(--interactive-accent);
/* Period Button Text Colors */
--color-text-day-bttn: var(--text-normal);
--color-text-week-bttn: var(--text-muted);
--color-text-month-bttn: var(--text-normal);
--color-text-quarter-bttn: var(--text-normal);
--color-text-year-bttn: var(--text-normal);
}
#pnc-container #timeline-container {
border: 1px solid green;
}
You can also style specific components using nested selectors:
#pnc-container #timeline-container {
border: 1px solid green;
}
Important: Always prefix your selectors with #pnc-container to prevent style conflicts with other plugins or Obsidian's core styles.
The plugin automatically adapts to your chosen Obsidian theme, but these variables give you fine-grained control over its appearance. Changes are applied immediately when you save your CSS fileβno need to restart Obsidian.
BRAT
BRAT: Add a beta plugin for testing
https://github.com/luiisca/obsidian-periodic-notes-calendar
Periodic notes calendar
in Settings β Community PluginsFor detailed setup instructions, see BRAT's quick guide.
Manually
path-to-your-vault/.obsidian/plugins
Periodic notes calendar
in Settings > community pluginsYou can use emojis to provide a quick visual summary of your notes. The plugin allows you to choose any emoji from the emoji picker dialog. Here are some examples of how you might use them:
Feel free to create your own emoji system that works best for your needs!
In addition to creating notes, you can also use natural language to navigate to specific dates. Try commands like:
This feature makes it easy to quickly access notes without needing to know the exact date.
If your notes use different formats, like YYYY-MM-DD
and YYYY/MM/DD
, and you want to standardize them, follow these steps:
This process works for all periodicities, allowing you to quickly standardize your notes regardless of their original format.
Ctrl/Cmd + Click
on a date to open that note in a new pane.
Pin frequently used plugin commands for quick access:
Periodic notes calendar
For more details, visit obsidian help.
Have your uncompleted tasks automatically move to the next period:
The calendar follows your Obsidian theme. For custom styling, create a CSS Snippet using the variables in the Customization section.
Use the Command Palette and search for Periodic notes calendar: Toggle calendar interface
.
Go to Settings β Periodic notes calendar β Calendar β Localization and choose your preferred start day.
Yes, it works fully on Obsidian Mobile.
If you encounter any issues or have feature requests, please file them in the GitHub Issues section.
If you find this plugin helpful, consider supporting its development: