Zoom Web UI Helper

Conner Bradley
Conner Bradley
2 min read

Update: The extension is now live! Get it for Firefox 🦊 here

Recently I started using zoom more and more for school; however, I recall using the web client particularly annoying. Zoom will try to force you to install their bloated desktop client (which cannot do screen sharing on Wayland) but you can get away with changing the meeting URL manually to get into the web client. Doing this manually can be tedious, so I decided to make a web extension for this!

This is a very basic web extension that does the following:
1. Check if the current page is a zoom meeting URL
2. If the meeting URL is a valid meeting URL, augment the URL to go directly to the web client
3. Reap the benefits?

I provide a means to disable this extension if it is being buggy, or if you wish to use the desktop zoom client. If you wish to see the sources you can visit the github page. I will update this article once this extension has been reviewed and accepted by Mozilla.

Internals

This a very simple web extension, with the following structure

.
├── icons 
│   └── meeting-room-vector.svg
├── index.js -- Core extension logic that gets injected into a page upon activation
├── manifest.json -- Defines metadata regarding the extension
├── popup -- Contains the sources for the pop-up configuration window
│   ├── bulma.min.css
│   ├── config.css
│   ├── config.html
│   └── config.js
└── README.md

Some key points:

  • manifest.json defines the extension and it's priveleges. Currently, this extension will only activate on pages matching the "*://*.zoom.us/*" pattern, and then upon activation the index.js script performs further checks to validate if the current zoom.us page is a meeting invite.
  • index.js core logic that is injected into the page as a content script. This script relies on a single regex for matching and extracting meeting URL components:

This core regex is /(.*zoom.us\/j\/)(.+?\b)/g, which works as follows on a zoom meeting URL:

    https://zoom.us/j/12345678910
    |---------------------------|
               Group 1
    |----------------|----------|
         Group 2       Group 3

For more information, feel free to read the sources, but for such a small simple web extension I'll end here 👋 feel free to get in touch if there are any bugs found with this extension.