Stream Deck plugin to allow users to mute their microphone on MacOS.
- connect to Elgato Stream Deck software using Websockets
- we use the asyncio event loop to manage running workloads for communicating with StreamDeck software and managing system sound
- Plugin manager handles the coordination
- Download repo
- Create a virtual environment with Python 3.7+
pip install -r requirements.txt
- Update shebang at top of
mic_control/app.py
with the Python Path from your virtual evironment above - Link folder
ln -s [path-to-file] /Users/[username]/Library/Application Support/com.elgato.StreamDeck/Plugins/com.alysivji.mutemic-mac.sdPlugin
- Restart StreamDeck software
websockets
documentation- Medium: How to create a Web Socket client
- Lynn Root - Advanced asyncio: Solving Real-world Production Problems
pytest
python mic_control/main.py -port 123 -info='{"application": {"language": "en", "platform": "mac", "version": "4.7.0.12981"}, "devicePixelRatio": 2, "devices": [{"id": "A123", "name": "Stream Deck", "size": {"columns": 5, "rows": 3}, "type": 0}, {"id": "D453", "name": "iPhone", "size": {"columns": 5, "rows": 3}, "type": 3}], "plugin": {"version": "1.4"}}'
- https://github.com/aaugustin/websockets
- what happens when client deletes our icon?
- need to add a state machine around sound control, two states:
ON
andOFF
- Lynn Root's video
- handling signals
- add handler
- exception handling
- add global exception handler
- testing
- debugging
- handling signals