Caldav Calendar

Sync and query CalDAV calendars (iCloud, Google, Fastmail, Nextcloud, etc.) using vdirsyncer +

Caldav Calendar is a community skill for CalDAV calendar integration, covering event synchronization, calendar querying, multi-provider support, offline caching, and command-line calendar management for Linux systems.

What Is This?

Overview

Caldav Calendar provides terminal-based access to CalDAV calendar services using open-source tools like vdirsyncer and khal. It covers event synchronization that bidirectionally syncs calendar data between local storage and remote CalDAV servers with conflict resolution, calendar querying that searches and filters events by date range, category, and keywords from the command line, multi-provider support that works with iCloud, Google Calendar, Fastmail, Nextcloud, and any CalDAV-compliant service, offline caching that maintains local event copies for fast access without network connectivity, and command-line management that creates, edits, and deletes events using terminal commands. The skill helps Linux users manage calendars efficiently without browser interfaces or desktop GUI applications or proprietary desktop applications.

Who Should Use This

This skill serves Linux users who prefer terminal workflows over GUI applications, developers automating calendar operations in scripts, and privacy-focused individuals using self-hosted and managed calendar servers. System administrators managing multiple user calendars across an organization will also find this skill particularly valuable.

Why Use It?

Problems It Solves

Web-based calendar interfaces require constant browser context switching that interrupts developer workflows and reduces productivity and break terminal-centric workflows. Proprietary calendar applications lack scriptability and automation capabilities and integration with automation pipelines. Accessing multiple calendar providers simultaneously from different services requires managing separate applications and credentials. Offline calendar access fails completely when using cloud-only calendar services without local caching, making reliable access during travel or poor connectivity impossible.

Core Highlights

Sync engine bidirectionally updates events between local and remote CalDAV servers. Calendar query tool searches events by date, keyword, and category. Provider adapter connects to iCloud, Google, Nextcloud, and CalDAV services. Offline cache maintains local event copies for network-independent access.

How to Use It?

Basic Usage

vdirsyncer sync

khal list today 7d

khal new 2025-03-15 10:00 \
  1h "Team Meeting" \
  -l work

khal search "project review"

Real-World Examples

cat > ~/.vdirsyncer/config <<EOF
[pair my_calendar]
a = "my_calendar_local"
b = "my_calendar_remote"
collections = ["from a", "from b"]

[storage my_calendar_local]
type = "filesystem"
path = "~/.calendars/"

[storage my_calendar_remote]
type = "caldav"
url = "https://calendar.google.com"
EOF

khal calendar

khal interactive

khal printcalendars

Advanced Tips

Schedule vdirsyncer sync as a cron job or systemd timer to automatically keep local and remote calendars synchronized throughout the day. A systemd timer is generally preferred over cron for better logging and dependency management. Use khal in shell scripts to check for conflicts before scheduling new meetings programmatically. Configure multiple CalDAV accounts to view unified calendar data across personal and work calendars in a single interface. You can also pipe khal output into other command-line tools for custom reporting or notification workflows.

When to Use It?

Use Cases

Manage personal and work calendars from the terminal without opening browser tabs or GUI applications. Build automation scripts and tools that check calendar availability programmatically before scheduling meetings or sending invitations. Access synchronized calendar data offline on Linux systems during travel or unreliable network conditions.

Related Topics

CalDAV protocol, calendar synchronization, terminal productivity tools, vdirsyncer, khal, and offline-first applications.

Important Notes

Requirements

Linux operating system with Python installed for running vdirsyncer and khal tools. CalDAV server credentials including server URL, username, and password or app-specific password for each calendar provider. Local storage space for caching calendar events and maintaining offline copies.

Usage Recommendations

Do: run vdirsyncer discover after adding new calendar collections to detect available calendars automatically. Use app-specific passwords instead of main account passwords for enhanced security with CalDAV services. Back up your local calendar storage directory regularly to prevent data loss. Set restrictive file permissions on your vdirsyncer configuration file using chmod 600 to protect stored credentials.

Don't: sync too frequently since excessive API calls may trigger rate limiting from calendar providers. Store CalDAV credentials in plaintext configuration files without proper file permissions and encryption. Assume all CalDAV providers support all features since implementation varies across services.

Limitations

The skill requires Linux operating system since vdirsyncer and khal tools are primarily developed for Unix-like systems. Initial configuration setup involves manual editing and customization of configuration files which may be complex for users unfamiliar with CalDAV. Some calendar features like shared calendars and delegation may have limited support depending on the provider implementation.