Open Zoom from Safari without prompting

November 23, 2022
By Jeff Johnson of Underpass App Company

Remember the old Get a Mac commercial in which Apple ridiculed Windows Vista "Cancel or Allow" permission prompts? Well…

Do you want to allow this page to open zoom.us.app?

You may wonder, can my Safari extension StopTheMadness stop this? In many cases, yes, with its web rules feature, but Zoom is a tricky case. There are three problems. First, the Zoom app declares that it can handle special URL schemes such as zoommtg, but it doesn't declare that it can handle the standard web URL schemes http and https, even though it can in fact handle them! Second, all Mac App Store apps including StopTheMadness are sandboxed, and one of the many limitations of sandboxed apps is that they can't force another app to open a URL that it doesn't declare it can handle. Third, Safari doesn't give extensions an opportunity to handle non-web URLs loaded by an iframe or JavaScript.

The solution here was obvious to me: release a non-sandboxed Mac app that can force Zoom to open web URLs. And I could have done that, but there's a fourth problem. (I know, I said there were three problems.) Mac apps distributed outside the App Store need to be notarized by Apple, and that can be a pain. I didn't feel like doing it (yet). This also seemed like one of those "give a fish, teach to fish" choices. I chose the latter, because it gives me the opportunity to talk about my old forgotten friend AppleScript! Did you know that you can fairly easily create your own AppleScript app to open URLs in Zoom?

November 28, 2022 Update: I ended up creating a new Mac app StartTheZoom so that you don't have to create your own AppleScript app. But the instructions are still below if you're interested.

Open the Script Editor app in the Utilities subfolder of the Applications folder. Then paste the following text, and press the Compile (hammer) button.

on open location the_URL
	tell application id "us.zoom.xos"
		activate
		open location the_URL
	end tell
end open location

Untitled.scpt in Script Editor

Save the script as an Application in the Applications folder.

Save As: ZoomOpener.app

Are we done yet? Not quite, but soon! We need to declare that the ZoomOpener app handles web URLs, something the Zoom app failed to do. Select the ZoomOpener app in Finder, open the contextual menu, and select Show Package Contents. An app appears in Finder as a single file, but it's actually a folder with a bunch of neat stuff inside!

Show Package Contents

Inside the ZoomOpener.app folder there's a Contents folder. Don't ask me why, that's just the way things have always been. Open that folder too.

ZoomOpener.app Contents

You're looking for the Info.plist file.

ZoomOpener.app Info.plist

Drag the Info.plist to TextEdit, or to your favorite text editor.

Info.plist in TextEdit

The Info.plist file is in XML format. You want to carefully paste the following text without wrecking the XML, which is very easy to wreck!

<key>CFBundleURLTypes</key>
<array>
	<dict>
		<key>CFBundleTypeRole</key>
		<string>Viewer</string>
		<key>CFBundleURLName</key>
		<string>Web site URL</string>
		<key>CFBundleURLSchemes</key>
		<array>
			<string>http</string>
			<string>https</string>
		</array>
	</dict>
</array>

CFBundleURLTypes

You can use the following command in Terminal to check the format of the Info.plist file after you save.

plutil /Applications/ZoomOpener.app/Contents/Info.plist

The output should say "OK". By the way, "pl" in plutil stands for property list. That's also what the .plist file extension signifies.

That's it, we've created an AppleScript app! However, it's not very pretty, because the app icon is generic. If you want to give the app a new icon, you can actually copy and paste in Finder. Let's copy the Zoom app's own icon. Select Zoom in Finder, and open the Get Info window.

zoom.us.app Info window

Select the icon in the upper left corner, and press ⌘C to copy. Now open the Get Info window for the ZoomOpener app.

ZoomOpener.app Info window

Select its icon, and press ⌘V to paste.

Paste zoom.us.app icon

Run the new app once, to make sure that Finder has registered the app with the system. The app will simply quit immediately after you launch it, because you haven't given the app a URL to open.

Now you can use the ZoomOpener app in the StopTheMadness Web Rules. Zoom meeting URLs typically have this format:

https://zoom.us/j/

StopTheMadness Web Rules

You can try Zoom's test page to see whether it works.

Join Meeting Test

Once you've finished this process, you can honestly tell your family that you're an app developer.

Also please tell your family that my App Store apps are all on sale now until the end of November!