Sync your Slack status during Zoom meetings

/ in tech

When I initially joined GRIN (we’re hiring!) as a software developer working remotely, I was involved in a lot of different Zoom meetings.

I generally like to have my Slack status reflect my availability, but at the same time I don’t want to manually change it frequently.

I began to do some research and discovered using some different tools, that it was possible to automate updating my Slack status whenever I joined a Zoom meeting.

A few of my colleagues asked me if I was doing something manually or knowing me, that there was a chance I wasn’t… and I am now sharing my setup to help others get the same workflow working.

There are a few required pre-requisites. First of all, this setup assumes you are using a computer running MacOS. Your Slack workspace also must have the :zoom: emoji registered in order for the API calls to work as well. With that in mind, let’s get started!

1. Download and Install HammerSpoon

HammerSpoon is an automation app for MacOS which is able to control applications like Zoom.

If you use Homebrew and Casks, you can simply install the app using your terminal with the following command:

$ brew install --cask hammerspoon

Launch the Hammerspoon application to ensure it creates the required user directory paths the first time it is ran.

Ensure HammerSpoon is allowed permission on the machine to monitor the Zoom application by enabling it under System Preferences > Security & Privacy > Privacy > Accessibility.

2. Setup Slack

Slack Application Registration

We’ll be setting up a script that calls the Slack API in order to update our status for us when executed. In order to make API calls to Slack, we need to create a new developer application.

If you are in an organization you can probably share the application with your entire Slack workspace and then have a unique User OAuth Token per user that installs it. This may be a follow up post in the future if there is interest.

Slack Application Configuration

We need to configure our application’s permissions which allows us to performs certain operations on behalf of a user. Copy the User Token Scopes setup below.

Then we need to generate a User OAuth Token which we will be using later on, so keep note of it someplace safe, like a sticky note on your desk by your password 😂.

3. Configure Slack Status Updater

The Bash script we will be using that will be called via HammerSpoon needs to get installed and configured. To do this run the following commands to set it up:

$ mkdir -p ~/bin
$ curl -L -o ~/bin/slack_status.tar.gz
$ mkdir -p /tmp/slack_status
$ tar --strip=1 -xzf ~/bin/slack_status.tar.gz -C /tmp/slack_status
$ rm -f ~/bin/slack_status.tar.gz
$ mv /tmp/slack_status/ ~/bin/
$ setup

3. Configure HammerSpoon

$ curl -L -o ~/.hammerspoon/zoom_detect.lua
$ echo 'local zoom_detect = require("zoom_detect")' > ~/.hammerspoon/init.lua

Next you need to click on the HammerSpoon icon in the menu bar and choose Reload Config.

Now you should be able to test by joining a Zoom meeting and seeing if your Slack status changes. HammerSpoon will show a desktop notification and if it all works then it is party time! 🎉

If you have an issue, check the HammerSpoon console for log messages which you can find under the menu bar > Hammerspoon > Console.