https://github.com/knwoop/ooi
Last synced: 5 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/knwoop/ooi
- Owner: knwoop
- License: mit
- Created: 2026-01-28T05:09:06.000Z (5 months ago)
- Default Branch: main
- Last Pushed: 2026-01-30T07:26:17.000Z (5 months ago)
- Last Synced: 2026-01-31T01:29:16.281Z (5 months ago)
- Language: Go
- Size: 50.8 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# ooi
A macOS CLI tool that automatically opens Google Meet 1 minute before meetings.
## Installation
```bash
go install github.com/knwoop/ooi@latest
```
Or build from source:
```bash
git clone https://github.com/knwoop/ooi.git
cd ooi
go build -o /usr/local/bin/ooi .
```
## Setup
### 1. Create OAuth Client ID in Google Cloud Console
1. Go to [Google Cloud Console](https://console.cloud.google.com/)
2. Create a new project
3. Enable Google Calendar API (APIs & Services > Library)
4. Configure OAuth consent screen (APIs & Services > OAuth consent screen)
- User type: External
- Scopes: `calendar.readonly`
- Test users: Add your Gmail address
5. Create OAuth Client ID (APIs & Services > Credentials > Create Credentials)
- Application type: Desktop app
6. Download the JSON file
### 2. Place credentials.json
```bash
mkdir -p ~/.config/ooi
mv ~/Downloads/client_secret_xxx.json ~/.config/ooi/credentials.json
```
### 3. Authenticate
```bash
ooi auth
```
A browser window will open for Google authentication.
### 4. Verify
```bash
ooi status
```
You should see your next meeting with a Google Meet link.
### 5. Enable auto-start
```bash
ooi install
```
The daemon will now start automatically on login.
## Commands
| Command | Description |
|---------|-------------|
| `ooi` | Start daemon (foreground) |
| `ooi auth` | Authenticate with Google |
| `ooi status` | Show ongoing and next meeting |
| `ooi sync` | Trigger immediate calendar sync |
| `ooi install` | Register with launchd (auto-start) |
| `ooi uninstall` | Remove from launchd |
| `ooi reinstall` | Rebuild and restart daemon |
## How it works
1. Fetches Google Calendar every 3 minutes
2. Displays current/next meeting in the menu bar
3. Shows a notification dialog 1 minute before meetings with Meet links
4. Click "Join" to open Meet in your browser
### Menu bar
The menu bar shows your meeting schedule at a glance:
- `🟢 25m Weekly 1on1` - Ongoing meeting (25 minutes remaining)
- `⏳ 15m Stand-up` - Next meeting (starts in 15 minutes)
- `📅 No meetings` - No meetings today
Click the menu bar icon to:
- View meeting details
- Open Meet link
- Sync calendar manually
- Quit the app
### Running manually
If launchd auto-start doesn't work, you can run ooi manually:
```bash
# Run in background (survives terminal close)
nohup ooi > /tmp/ooi.log 2> /tmp/ooi.err &
# Or simply
ooi &
```
### Single meeting
```
┌─────────────────────────┐
│ ⚠️ ooi │
│ │
│ Meeting starting! │
│ Weekly Standup │
│ │
│ [Join] │
└─────────────────────────┘
```
### Multiple overlapping meetings
When multiple meetings start at the same time, each meeting becomes a button (max 3):
```
┌───────────────────────────────────────────┐
│ ⚠️ ooi │
│ │
│ Meeting starting! │
│ │
│ [Weekly Standup] [Project Review] [1:1] │
└───────────────────────────────────────────┘
```
Meetings are sorted by response status priority: accepted > tentative > needsAction.
## Files
```
~/.config/ooi/
├── credentials.json # OAuth client ID (manual)
├── token.json # Auth token (auto-generated)
└── ooi.pid # Daemon PID file (auto-generated)
~/Library/LaunchAgents/
└── com.ooi.plist # launchd config (generated by install)
/tmp/
├── ooi.log # stdout log
└── ooi.err # stderr log
```
## Uninstall
```bash
ooi uninstall
rm /usr/local/bin/ooi
rm -rf ~/.config/ooi
```
## License
MIT