Google Calendar browse + create
mnml-msg-gcal is a terminal Google Calendar client. Today’s meetings, the week ahead, upcoming events — keyboard-driven navigation, respects the calendar list you’ve subscribed to. Quick-create dialogs. Runs standalone in any terminal.
Status — v0.1 skeleton
Section titled “Status — v0.1 skeleton”Working: CLI + config, --install / --uninstall, Calendar API v3 client (list_events), OAuth token cache format.
Not yet implemented: OAuth interactive loopback flow, TUI event loop, quick-create popup. See the sibling repo for v0.2 milestones.
Install
Section titled “Install”cargo install --git https://github.com/chris-mclennan/mnml-msg-gcal mnml-msg-gcalmnml-msg-gcal --installSetup (per-user GCP project)
Section titled “Setup (per-user GCP project)”Google Calendar API requires a per-user OAuth client — same shape as gcloud auth login.
-
Open https://console.cloud.google.com, create a new project (or reuse one).
-
Enable Calendar API v3 under APIs & Services → Library.
-
OAuth consent screen — External + add your email as a Test user.
-
Credentials → Create Credentials → OAuth Client ID → Desktop app. Copy client_id + client_secret.
-
Drop them into
~/.config/mnml-msg-gcal/client.toml:client_id = "<your-client-id>.apps.googleusercontent.com"client_secret = "<your-client-secret>" -
Verify with
mnml-msg-gcal --check.
Once v0.2 lands, first launch triggers the OAuth loopback flow — browser opens, you grant Calendar scope, token lands at ~/.config/mnml-msg-gcal/token.json.
Config
Section titled “Config”~/.config/mnml-msg-gcal.toml (scaffolded first run):
calendar_id = "primary" # or an email-shaped calendar idtimezone = "America/New_York" # defaults to $TZ then UTCrefresh_secs = 60upcoming_days = 14Keys (planned for v0.2)
Section titled “Keys (planned for v0.2)”| Key | Action |
|---|---|
1 / 2 / 3 | Switch to Today / Week / Upcoming |
j / ↓, k / ↑ | Move selection |
PgUp / PgDn, g / G | Navigate |
Enter | Open event details |
n | Quick-create event |
r | Refresh |
y | Yank event link (htmlLink) |
q / Esc / Ctrl+C | Quit |
Two run modes
Section titled “Two run modes”Standalone
Section titled “Standalone”mnml-msg-gcalHosted as a mnml Pty pane
Section titled “Hosted as a mnml Pty pane”:term mnml-msg-gcalOr <leader>iC after mnml-msg-gcal --install.