Skip to content

asp55/WatchForMeeting

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

40 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

WatchForMeeting

A Spoon for Hammerspoon to answer the question

Are you in a meeting?

Watches to see if:

  1. Zoom is running
  2. Are you on a call
  3. Are you on mute, is your camera on, and/or are you screen sharing

And then lets you share that information.

Installation & Basic Usage

Download the Latest Release and unzip to ~/.hammerspoon/Spoons/

To get going right out of the box, in your ~/.hammerspoon/init.lua add these lines:

hs.loadSpoon("WatchForMeeting")
spoon.WatchForMeeting:start()

This will start the spoon monitoring for zoom calls, and come with the default status page, and menubar configurations.

Sharing Status To A Webpage

Default

In order to minimize dependencies, by default this spoon uses a hs.httpserver to host the status page. This comes with a significant downside of: only the last client to load the page will receive status updates. Any previously connected clients will remain stuck at the last update they received before that client connected.

Once you are running the spoon, assuming you haven't changed the port (and nothing else is running at that location) you can reach your status page at http://localhost:8080

Better - MeetingStatusServer

For a better experience I recommend utilizing an external server to receive updates via websockets, and broadcast them to as many clients as you wish to connect.

For that purpose I've built http://github.com/asp55/MeetingStatusServer which runs on node.js and can either be run locally as its own thing, or hosted remotely.

If using the external server, you will to create a key to identify your "room" and then provide that information to the spoon. In that case, before spoon.WatchForMeeting:start() add the following to your ~/.hammerspoon/init.lua

spoon.WatchForMeeting.sharing.useServer = true
spoon.WatchForMeeting.sharing.serverURL="[YOUR SERVER URL]"
spoon.WatchForMeeting.sharing.key="[YOUR KEY]"

or

spoon.WatchForMeeting.sharing = {
  useServer = true,
  serverURL = "[YOUR SERVER URL]",
  key="[YOUR KEY]"
}

Disable Sharing

If you don't want to broadcast your status to a webpage, simply disable sharing

  spoon.WatchForMeeting.sharing.enabled = false

or

  spoon.WatchForMeeting.sharing = {
    enabled = false
  }

Menubar Icons

Configuration→

State↓
WatchForMeeting.menuBar={...}
color=true,
detailed=true,
color=true,
detailed=false,
color=false,
detailed=true,
color=false,
detailed=false,
showFullState=true or showFullState=false
Available Free slash Available Free slash Available Free slash Available Free slash Available
Busy In meeting, no additional status In meeting, no additional status In meeting, no additional status In meeting, no additional status
showFullState=true only
Busy + Mic On In meeting, mic:on, video:off, screensharing:off In meeting, mic:on, video:off, screensharing:off In meeting, mic:on, video:off, screensharing:off In meeting, mic:on, video:off, screensharing:off
Busy + Video On In meeting, mic:off, video:on, screensharing:off In meeting, mic:off, video:on, screensharing:off In meeting, mic:off, video:on, screensharing:off In meeting, mic:off, video:on, screensharing:off
Busy + Screen Sharing In meeting, mic:off, video:off, screensharing:on In meeting, mic:off, video:off, screensharing:on In meeting, mic:off, video:off, screensharing:on In meeting, mic:off, video:off, screensharing:on
Busy + Mic On + Video On In meeting, mic:on, video:on, screensharing:off In meeting, mic:on, video:on, screensharing:off In meeting, mic:on, video:on, screensharing:off In meeting, mic:on, video:on, screensharing:off
Busy + Mic On + Screen Sharing In meeting, mic:on, video:off, screensharing:on In meeting, mic:on, video:off, screensharing:on In meeting, mic:on, video:off, screensharing:on In meeting, mic:on, video:off, screensharing:on
Busy + Video On + Screen Sharing In meeting, mic:off, video:on, screensharing:on In meeting, mic:off, video:on, screensharing:on In meeting, mic:off, video:on, screensharing:on In meeting, mic:off, video:on, screensharing:on
Busy + Mic On + Video On + Screen Sharing In meeting, mic:on, video:on, screensharing:on In meeting, mic:on, video:on, screensharing:on In meeting, mic:on, video:on, screensharing:on In meeting, mic:on, video:on, screensharing:on