English | 简体中文
MoniVol is a free, simple, lightweight macOS menu bar app that enables system volume control for external HDMI and DisplayPort displays.
Use your Mac's volume keys, mute key, and system volume slider with a connected display. MoniVol focuses on this one task: it does not include an EQ, per-app volume controls, audio effects, or complex routing.
![]() |
![]() |
|---|---|
| Menu bar popover | Control Center output list |
![]() |
![]() |
| Before: display volume cannot be adjusted | After: volume works normally |
- System volume control: Adds software volume and mute control for HDMI and DisplayPort displays that lack it.
- Menu bar controls: Adjust volume, mute, switch output devices, and check for updates.
- Native SwiftUI interface: A modern, uncluttered menu bar layout.
- Small footprint: The release DMG is about 5 MB, and MoniVol uses about 30 MB of memory in the author's everyday setup.
- Automatic display handling: Switches to built-in output when a display disconnects, then restores the corresponding MoniVol output when it reconnects.
- Selective proxying: Built-in speakers, Bluetooth headphones, and ordinary USB audio devices continue to use native macOS output.
macOS does not offer software volume control for some HDMI and DisplayPort audio outputs. If the display also cannot be controlled through DDC, the Mac's volume keys cannot adjust its sound.
SoundSource, eqMac, and FineTune cover broader audio needs, including EQ, per-app volume, and routing. MoniVol focuses on making system volume control work for external displays while leaving other output devices on their native audio paths.
In the author's everyday setup, SoundSource has reached about 400–500 MB of memory after extended use, while MoniVol uses about 30 MB. Memory use varies with macOS version, connected devices, and uptime.
Download the latest MoniVol.dmg from GitHub Releases:
- Open the DMG and drag
MoniVol.appinto Applications. - Launch MoniVol and follow the first-run guide to install the audio driver. This step requires an administrator password.
- Select the display in MoniVol's menu bar device list, or select its corresponding
(MoniVol)output in macOS Sound settings.
First-run setup
Alternatively, install the app from the MoniVol Homebrew tap:
brew install --cask Geliv/tap/monivolThen launch MoniVol and complete steps 2–3 above.
To start MoniVol automatically, open More options → Open at Login in the menu bar popover and check the option.
Since v1.1.5, More options → Check for Updates downloads and installs updates in the app. Older installations need one manual upgrade to v1.1.5 or later.
If macOS blocks the first launch of a manually installed, unnotarized build, go to System Settings → Privacy & Security and choose Open Anyway, or remove the app's quarantine attribute in Terminal:
xattr -rd com.apple.quarantine /Applications/MoniVol.appYou can then use the system volume keys, mute key, and volume slider.
- Open MoniVol from the menu bar and select Uninstall Driver.
- Quit MoniVol. It also quits automatically after the driver is removed.
- Move
MoniVol.appfrom Applications to the Trash. If you installed it through Homebrew, runbrew uninstall --cask Geliv/tap/monivolinstead.
For an HDMI or DisplayPort output without writable volume controls, MoniVol creates a corresponding virtual audio device:
macOS / apps
↓
MoniVol virtual output
↓
Software volume and mute
↓
Physical HDMI / DisplayPort display
System volume controls act on the virtual device. MoniVol Host adjusts the audio gain and forwards playback to the physical display. Other output devices do not use this path.
You need macOS 13 or later, Xcode Command Line Tools, Swift 5.9 or later, CMake 3.20 or later, and Git. Install the command line tools and CMake:
xcode-select --install
brew install cmakeClone the repository with the libASPL submodule required by the HAL driver, then build:
git clone --recurse-submodules https://github.com/Geliv/MoniVol.git
cd MoniVol
./tools/build_release.shIf you already cloned the repository without submodules, run git submodule update --init --recursive first.
The universal app, audio Host, and HAL driver are bundled in dist/MoniVol.app. Open it directly, or copy it to Applications:
sudo ditto dist/MoniVol.app /Applications/MoniVol.app
open /Applications/MoniVol.appMoniVol's early implementation drew on SoundBridge for its virtual audio device and Host forwarding architecture. The HAL driver uses libASPL.
MoniVol is licensed under the PolyForm Noncommercial License 1.0.0. It is free for personal, educational, and other noncommercial use. Commercial use requires prior permission from the author.





