Skip to content

brettinternet/mic-mute

Repository files navigation

Mic Mute for macOS

A system-wide mute for macOS microphones with a global shortcut and visual confirmation of mute status. Inspired by VCM for Windows.

popup window screenshot indicating the microphone is off

Mute with Cmd Shift A or from the system tray dropdown. This is configurable from a settings file in ~/Library/Application Support/mic-mute/settings.json.

Features

  • CoreAudio API mute input devices
    • Mute input devices
      • Note: Some virtual devices may be unable to mute for now
    • Provide global hotkey muting
    • Poll new devices to mute while microphones should be off
  • Visual confirmation of mute status
    • Show microphone mute status in system tray
    • Show microphone mute status in small popup window
    • Popup window shouldn't appear in screenshots or recordings and ignores mouse events
    • Popup follows screens and monitors with cursor
  • Report whether camera is in use (disabling cameras appears to be impossible or too difficult for the scope of this project)
  • Add configurable settings (hotkey, startup)
  • Open app on system startup

Releases

I have not elected to sign the app by joining the Apple Developer Program. The releases have been self-signed by me and can be installed by bypassing the typical app security on macOS. You're also welcome to build and bundle the app yourself with the simple instructions described below.

View releases

Build

Install dependencies with mise. Or you may install Rust. Then, install go-task or run the commands from the Taskfile separately yourself.

Install the build dependencies, build and bundle the app.

task build

Once the build is complete, a finder window should open to the built bundle in the the folder ./target/aarch64-apple-darwin/release/bundle/osx.

Develop

CI CI CI

Setup

Install Rust. Then, install go-task or run the commands from the Taskfile separately yourself.

Install development dependencies.

task init

Run

Run and watch for changes.

task start

Build

task build
Release Create a certificate to self-sign.
openssl req -x509 -newkey rsa:2048 -keyout sign.key -out sign.crt \
    -days 3650 -nodes -subj "/CN=mic-mute"
cat sign.key >> sign.crt
rm sign.key

Build a release.

task release