Easy Join Zoom Meeting the Hard Way
Apr 23, 2020
I've got tons of zoom meetings every day, links to the meetings are in my calendar. Usually the flow is as follows:
- notice event notification
- go to calendar app
- find the meeting
- open meeting details
- click the zoom meeting link
- wait for Safari to open the page and show the dialog to open zoom
- click on the allow button
- wait for zoom to join meeting
- ...
- profit :/
Not really. That is bloody lot of steps.
And the first point of failure is the notification. Most of the meetings are set up by other people and all I want to do is just click on “accept” or “decline”, without setting up the reminders. The other issue is noticing the little bugger in top right corner of the screen.
I’m using a Mac Pro with usually useless touch bar. I’ve started using the Better Touch Tool that made the touch bar slightly more useful. I’ve added buttons to paste my personal zoom link to anywhere my cursor is, to view current track and play/pause, to like or dislike the track and so on.
One of the most useful widgets for the problem being discussed is the ‘Next Events/Reminders Widget’. It draws the time and subject of next/current meeting on the touch bar and switches to the calenar application when tapped. Actually, you can tweak four different actions for the widget, lap/long tap for the date and tap/long tap for the event. There is an option to show the event in calendar, but it is somewhat broken for the recurring events, it shows the first occurence which might have been ages ago and you’ll need to go back to today in the calendar. Well, that makes the task of seeng the meeting and getting to calendar easier.
The most annoying thing is to click the link and wait for the browser to show the dialog. I’d like to jump to zoom directly. The solution to this is to use applinks, special URLs that have app target instead of protocol in them. Zoom has a URL schema starting with zoommtg
that contains the host, zoom.us
for regular users, for corporate users that would be something like company.zoom.us
, conference room number and and optional password. There are some more options that can be safely disregarded. Well, in the meetings that I create, I can paste my personal applink, but in some applications (e.g. Telegram) the applink gets broken and that doesn’t work for other people inviting me to the meetings.
So, the plan was quite obvious:
- get current or upcoming event from the calendar
- parse zoom URL from event description
- transform it to applink
- open it
I was first planning to use applescript to do it as the BTT allows creating actions that execute applescript. But it turned out that the applescript is one of the ugliest programming languages in the world and it has very limited support for operating strings. Moreover, the calendar scripting api is totally broken and it’s impossible to get recurring events with it. So I changed the plan to create a command-line utility that retrieves events from the caledar, parses descriptionns and outputs the zoom applink.
I’ve picked swift language for the task, as I really hate Obective C’s syntax. Well, swift is even uglier than applescript. Using regular expressions is a real pain. After a couple of hours struggling with application sandboxing, setting up permissions for accessing the calendar and vomiting from the look of the regexes libraries in OSX/iOS I came up with a working tool that prints useable zoom applinks.
Finally, I plugged the compiled program to applesript and here you go:
- get the meeting link
- if music is playing, pause it
- set volume to 100%
- open zoom link
All I had to do afterwards was to put the script into BTT action and bind to event tap on touch bar widget.
After that joining the zoom meeting flow became like this:
- notice a meeting on the touch bar
- tap the event
- that’s it, I’m in
You can grab the sources for the swift program and applescript here