Check your daily agenda from the terminal without opening a browser
Add Google Calendar events from a cron job or shell script
Import ICS meeting invites from a terminal email client into Google Calendar
Set up cron-based event reminders that trigger a custom script or notification
Requires a Google Cloud project with the Calendar API enabled and OAuth2 credentials configured before first use.
gcalcli is a Python command-line tool for accessing and managing Google Calendar from the terminal. If you prefer working in a shell rather than opening a browser, gcalcli lets you view your schedule, add events, delete events, edit events, and search across your calendars without leaving the command line. The tool connects to your Google Calendar through the official Google Calendar API, using OAuth2 to authenticate with your Google account. Once set up, it can display an agenda for a date range, show a visual ASCII calendar for the month, search for past and future events, and flag scheduling conflicts between events. You can add events quickly with a short text string or interactively by filling in details step by step. gcalcli also handles calendar imports, reading ICS and vCal files (the format used by Microsoft Exchange and many other calendar applications) and importing them into a Google Calendar. This makes it useful as an attachment handler in terminal-based email clients. The tool works on Linux and macOS, with packages available in several Linux distributions including Debian, Ubuntu, and Void Linux, plus Homebrew for macOS. You can also install it from PyPI using pip. For more advanced use cases, gcalcli supports running as a cron job to fire reminders, working with a specific subset of calendars by name or regex, outputting colored text, and generating shell completion scripts for bash, zsh, and fish. Anyone who lives in the terminal and uses Google Calendar will find gcalcli a practical replacement for opening a browser tab every time they need to check their schedule.
← insanum on gitmyhub — every repo by this author, as a profile.
Verify against the repo before relying on details.