A macOS Automator app that intercepts Google Meet links and lets you choose which Chrome profile to open them with. Useful when you have multiple Google accounts (e.g. personal and work) and want meetings to open in the right account's PWA rather than whichever Chrome profile happened to be in the foreground.
When a Google Meet URL is opened, MeetChooser presents a dialog listing all signed-in Chrome profiles by email address. Pick an account and the meeting opens as a PWA in that profile. If only one profile is signed in, the dialog is skipped entirely.
- macOS
- Google Chrome installed at
/Applications/Google Chrome.app - The Google Meet PWA installed in at all chrome profiles (see Installing the Meet PWA)
- A URL routing tool to intercept Meet links — see URL handler setup
- Download the latest
MeetChooser.app.zipfrom GitHub Releases - Unzip and copy
MeetChooser.appto~/Applications(or/Applications) - Strip macOS extended attributes and apply an ad-hoc signature to allow launch:
xattr -cr ~/Applications/MeetChooser.app codesign --force --deep --sign - ~/Applications/MeetChooser.app
- On first run, a config file will be created automatically at:
~/.config/meet-chooser-config.ini - Edit that file to customise behaviour — see Configuration
On first run, MeetChooser creates ~/.config/meet-chooser-config.ini with defaults. You can also copy the included example file as a starting point:
cp meet-chooser-config.example.ini ~/.config/meet-chooser-config.iniThe config file uses INI format with a [meet-chooser] section. Available options:
| Variable | Default | Description |
|---|---|---|
STRIP_FRAGMENT_EMAIL |
"" |
Email address for which URL fragments are stripped before opening. Workaround for a bug where fragment-bearing URLs prevent meetings from loading. Leave empty to disable. |
PWA_APP_ID |
kjgfgldnnfoeklkmfkjfagphfepbbdan |
Chrome PWA app ID for Google Meet. The default is correct for most users — see Finding the Meet PWA app ID if you need to verify. |
CHROME |
/Applications/Google Chrome.app/Contents/MacOS/Google Chrome |
Full path to the Chrome executable. Change if Chrome is installed elsewhere. |
Changes take effect immediately — no need to restart anything.
When you try to share your screen in a Google Meet, macOS may prompt you to grant screen recording permission to MeetChooser rather than Chrome. This happens because MeetChooser launched the PWA, making it the parent process in macOS's view.
To fix this, grant screen recording permission to MeetChooser:
- Open System Settings → Privacy & Security → Screen Recording
- If MeetChooser is listed, enable the toggle next to it
- If it is not listed, click +, navigate to
~/Applications(or/Applications), and addMeetChooser.app
You may need to restart Chrome after granting the permission for it to take effect.
MeetChooser needs to be registered as the handler for Google Meet URLs. The recommended approach is Finicky, a free macOS app that acts as a default browser proxy and routes URLs to different apps based on rules.
- Install Finicky and set it as your default browser
- Add a rule to your
~/.finicky.jsconfig to send Meet URLs to MeetChooser:
export default {
defaultBrowser: {
name: "com.google.Chrome",
appType: "bundleId",
},
handlers: [
{
match: finicky.matchHostnames(["meet.google.com"]),
browser: {
name: "/Applications/MeetChooser.app",
appType: "path",
},
},
],
};Finicky will then pass matching URLs to MeetChooser via Apple Events, which triggers the profile chooser dialog.
The Meet PWA must be installed in each Chrome profile you want to use:
- Open Chrome with the profile you want
- Go to meet.google.com
- Click the install icon (⊕) in the address bar, or go to ⋮ menu → Cast, save, and share → Install page as app
The PWA_APP_ID in the config file identifies the Meet PWA to Chrome. It is normally the same for everyone (kjgfgldnnfoeklkmfkjfagphfepbbdan) but you can verify or look it up if needed.
Via the filesystem (easiest):
- Open Finder and navigate to
~/Applications/Chrome Apps.localized/ - Find
Google Meet.app, right-click → Show Package Contents - Open
Contents/Info.plist - Look for the
CrAppModeShortcutIDkey — its value is the app ID
Via the terminal:
defaults read ~/Applications/Chrome\ Apps.localized/Google\ Meet.app/Contents/Info.plist CrAppModeShortcutIDVia Chrome:
- Open Chrome and go to
chrome://apps - Right-click Google Meet → Details
- The app ID appears in the address bar:
chrome://apps/detail/<APP_ID>
The meaningful source files are:
| File | Purpose |
|---|---|
MeetChooser.app/Contents/Resources/Scripts/meet-chooser.sh |
Main logic — edit this directly |
applet.applescript |
AppleScript source — edit this for changes to the applet |
The compiled main.scpt inside the bundle is a binary derived from applet.applescript. After editing the AppleScript source, recompile and commit both:
osacompile -o MeetChooser.app/Contents/Resources/Scripts/main.scpt applet.applescript
git add applet.applescript MeetChooser.app/Contents/Resources/Scripts/main.scpt
git commitWhen copying the app to a new machine, strip macOS extended attributes and apply an ad-hoc signature to avoid Gatekeeper blocking the launch:
xattr -cr MeetChooser.app
codesign --force --deep --sign - MeetChooser.app