Native macOS Calendar CLI built with EventKit. No AppleScript, no osascript.
Trigger when user says or asks for:
The calctl CLI is already built at https://github.com/christianteohx/calctl.
Clone and build it, or install via Homebrew.
Install (Homebrew, recommended):
brew install christianteohx/tap/calctl
Direct binary:
curl -fsSL https://github.com/christianteohx/calctl/releases/latest/download/calctl -o ~/bin/calctl
chmod +x ~/bin/calctl
Build from source (macOS 13+, Swift 6.0+):
git clone https://github.com/christianteohx/calctl
cd calctl
swift build
.build/release/calctl <command>
First run: macOS will prompt for Calendar permission. Grant it in System Settings > Privacy & Security > Calendars > Terminal.
calctl status check calendar access status
calctl authorize trigger permission prompt
calctl list list all calendars (with id, title, source)
calctl today [--attendees] show today's events (--attendees shows invitees)
calctl tomorrow [--attendees] show tomorrow's events (--attendees shows invitees)
calctl week [--attendees] show this week's events (--attendees shows invitees)
calctl date YYYY-MM-DD [--attendees] show events for a specific date
calctl add --title ... --start ... --end ... [--recurrence RULE] create an event
calctl edit --id <id> ... edit an event
calctl delete --id <id> delete an event
--calendar <name> filter by calendar name
Add --recurrence with iCalendar RRULE syntax:
calctl add --title "Weekly Standup" --start "2026-04-14 09:00" --end "2026-04-14 09:30" --recurrence "FREQ=WEEKLY;INTERVAL=1;BYDAY=MO"
calctl add --title "Daily Reminder" --start "2026-04-15 08:00" --end "2026-04-15 08:05" --recurrence "FREQ=DAILY"
calctl add --title "Monthly Report" --start "2026-05-01 10:00" --end "2026-05-01 11:00" --recurrence "FREQ=MONTHLY;BYMONTHDAY=1"
Supported RRULE keys: FREQ (DAILY/WEEKLY/MONTHLY/YEARLY), INTERVAL, BYDAY, BYMONTHDAY, COUNT, UNTIL.
Use --attendees on today, tomorrow, week, or date commands to show attendee information:
calctl today --attendees
calctl week --attendees
Shows each attendee's name/email and participation status (accepted, pending, declined, tentative, etc.). Events with no attendees show no attendee data. Available in both plain text and JSON output.
共 1 个版本