Calendar setup
stint can pull calendar events and offer them as one-click time entries. This is useful for any “log the meeting I just had” workflow — open the popover after a meeting, click the event, the timer entry is created with the meeting’s title and time range.
Once one or more accounts are connected, the Settings → Calendar panel looks roughly like:
Add a Google account
Section titled “Add a Google account”In the GUI: Settings → Calendar → Add Google account. A browser tab opens, you authorize, the tab redirects back. stint pulls the list of calendars under that account.
Or via CLI:
stint calendar add googlePick which calendars to include
Section titled “Pick which calendars to include”Each Google account can have many calendars (primary, holidays, shared team calendars, etc.). Toggle which ones surface in stint via:
-
GUI: Settings → Calendar → <account> → Toggle each calendar
-
CLI:
Terminal window # List calendars on an account (shows inclusion + default project too)stint calendar calendars <account-id># Include or exclude a specific calendarstint calendar calendars <account-id> --include <calendar-id>stint calendar calendars <account-id> --exclude <calendar-id>
Excluded calendars are still fetched (to keep the cache warm) but don’t appear in the popover’s event picker.
Default project for calendar-logged time
Section titled “Default project for calendar-logged time”When you click an event in the popover to log it, stint creates a time entry with the event’s title, start, and end. You can set a per-calendar default project so logged events land under that project automatically.
-
GUI: Settings → Calendar → <account> → <calendar> → Default project
-
CLI:
Terminal window stint calendar calendars <account-id> \--set-default-project <calendar-id> <project-uuid>stint calendar calendars <account-id> \--clear-default-project <calendar-id>
Refresh cadence
Section titled “Refresh cadence”stint polls Google every 15 minutes in the background. You can force a refresh from Settings → Calendar → <account> → Refresh or via:
stint calendar refresh <account-id>For forks: registering your own Google OAuth client
Section titled “For forks: registering your own Google OAuth client”The canonical reyem.tech build of stint ships with a Google OAuth client
ID and secret baked at compile time (read via option_env! from
STINT_GOOGLE_CLIENT_ID / STINT_GOOGLE_CLIENT_SECRET).
If you’re building stint from source for personal use or as a fork, you need to register your own client at Google Cloud Console:
- Type: Desktop app
- Authorized scopes include:
.../auth/calendar.readonly - Authorized redirect URIs include:
http://127.0.0.1(loopback, port-agnostic)
Then set the env vars at build time:
STINT_GOOGLE_CLIENT_ID=… \STINT_GOOGLE_CLIENT_SECRET=… \ cargo build --releaseForks without these set still build and run — the calendar UI shows “Google OAuth not configured” instead of attempting the flow and failing opaquely.
Removing an account
Section titled “Removing an account”GUI: Settings → Calendar → <account> → Remove.
CLI: stint calendar remove <account-id>.
This deletes both the database row and the Keychain entry holding the OAuth tokens. Past calendar-logged time entries are preserved (they’re normal time entries; only the link back to the calendar event is broken).