Join Zoom meetings with fewer clicks

Hamid Zare
3 min readJun 9, 2020

As we embrace the remote working culture our reliance on Zoom increases by the day. Here I will address a minor but very common annoyance that I run into daily with joining Zoom meetings. Whether you click “join meeting” from Google Calendar, Slack, or any other means, often your browser jumps in to handle the link and they would like to ask you for confirmation before opening non HTTP protocols. Add searching for this newly opened tab to the process if you have multiple monitors/workspaces and you get the idea.

Chrome dialog box

There are two types of Zoom meeting links, the ones that start with https:// and the ones starting with zoommtg:// . Your computer most likely knows to directly open Zoom and put you in the meeting if the link starts with zoommtg:// . We will use this to improve our Zoom experience.

When you open any Zoom meeting link with https:// you get sent to the Zoom website which then points you to a proper zoommtg URL for which then your browser asks permission to open.

It used to be that you could tell Chrome to stop asking you for permission on a protocol to protocol basis. You can still do that on recent Chrome versions through this superuser answer: allow chrome/chromium to persist permission to open zoom for joining meetings so you don’t have to confirm it every time. Or specifically for Linux: here. With this change, you will stop getting asked for those confirmation dialogs.

To take this a step further we can intercepts all Zoom links you click on and update it to a zoomtg:// link without having to visit zoom.us. For example, if you use the Slack desktop app and click the “Join” button for a Zoom meeting.

To do this on Linux, you need a resource handler that supports regex associations. Mimeo is one such resource handler which takes over xdg-open and you can write custom associations for it. Arch Linux wiki has a section about it.

First, we’ll need a bash script that can open Zoom from various Zoomhttps:// meeting URLs.

Example Zoom URL handler zoomy.sh:

#!/bin/bash# link samples
# https://applications.zoom.us/event/callback/slack/96111111113?startUrl=alsdjfls-asdl-alsjdf
# conf_num=$(echo "${1}" | grep zoom.us | grep -ioP '(?<=/j/)\d+')
conf_num=$(echo "${1}" | grep zoom.us | grep -ioP '\d{10,11}')
[[ -z $conf_num ]] && exit 1command -v notify-send >/dev/null && notify-send "Joining zoom meeting: $conf_num"
xdg-open "zoommtg://zoom.us/join?action=join&confno=$conf_num"

Then we define the association rule that Mimeo expects:

zoomy.sh %U
^https?://([^/]*)?zoom.us/.*\d{10,11}

Now we just need to make sure that zoomy.sh is executable and can be found by applications in our system. Find the latest version of this script here

chmod +x zoomy.sh
# move it to a known path, or otherwise add it to the PATH
# for the process you expect to call onto xdg-open
mv zoomy.sh /usr/bin/

--

--