An open API service indexing awesome lists of open source software.

https://github.com/knwoop/ooi


https://github.com/knwoop/ooi

Last synced: 5 months ago
JSON representation

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