⭐Please star this project in GitHub if it helps you!⭐
Tired of apps changing your microphone volume without your consent? Of Windows constantly switching to the wrong audio device? Or of losing your device names and icons every time you change USB ports?
Volume Locker is a tray app that locks the volume of your audio devices and switches your audio and communication devices based on the device order you set. When you change USB ports, re-pair a Bluetooth device, or update a driver, it transfers your settings, along with the device's name and icon, to the device's new Windows entry. It is a portable, ~2MB binary written in Rust for Windows.
Volume.Locker.mp4
Paste this into Windows PowerShell to install or update:
New-Item -ItemType Directory -Path 'C:\Apps\Volume Locker' -Force >$null; `
Get-Process | Where-Object { $_.Path -eq 'C:\Apps\Volume Locker\VolumeLocker.exe' } | Stop-Process; `
curl.exe --progress-bar --location --output 'C:\Apps\Volume Locker\VolumeLocker.exe' `
'https://github.com/felipecrs/volume-locker/releases/latest/download/VolumeLocker.exe'; `
Start-Process 'C:\Apps\Volume Locker\VolumeLocker.exe'Or download the executable from the releases page, place it somewhere like C:\Apps\Volume Locker\VolumeLocker.exe, and run it.
Click the Volume Locker tray icon to open the menu.
- Under Output devices or Input devices, open a device.
- Check Keep volume locked to hold the volume at its current level.
- Check Keep unmuted to prevent the device from being muted.
Notify on volume restore and Notify on unmute show a notification when Volume Locker acts.
Volume Locker switches your default device to the first available device in the order.
- Under Default output device order or Default input device order, open Device order.
- Under Add device, open a device, then select Add to top or Add to bottom.
- Under Current order, open a device to move or remove it.
Communication device order, right below it, works the same way for voice calls and chat apps. By default, it holds Follow default output device (or Follow default input device), which picks the same device as the main order.
Check Notify on switch at the bottom of either submenu to get a notification when Volume Locker switches devices.
To use a device for now without changing your device order:
- Under Temporary default device, open Output or Input, or the Communication entry below either one.
- Select the device.
It stays active until you uncheck it or restart the app.
Some wireless receivers stay connected while the headset is off or out of range. Volume Locker skips supported headsets in that state, so put a fallback device below the headset in your device order. See Headset availability.
Windows sometimes treats your device as new when you change USB ports, re-pair it, or update a driver. You would normally lose its custom name and icon, along with anything tied to it.
Volume Locker recognizes the device and transfers its volume lock, unmute lock, place in the device order, name, and icon.
See Settings transfer and Transferring names and icons.
Volume Locker follows the Windows display language. To add yours, see Localization.
| Preference | Default | What it does |
|---|---|---|
| Settings transfer > Automatically transfer device settings | On | Transfers settings when Windows treats a device as new |
| Settings transfer > Also transfer device name and icon | On | Transfers the device's Windows name and icon with its settings |
| Settings transfer > Notify on settings transfer | Off | Shows a notification when settings transfer |
| Skip disconnected wireless headsets | On | Skips supported headsets that are off or out of range |
| Auto-launch on startup | Off | Starts Volume Locker when you sign in to Windows |
| Check for updates on launch | On | Checks for a new release when the app starts |
Volume Locker started as my first Rust project, born from the dissatisfaction with existing solutions that relied on closed-source tools or lacked specific device locking capabilities. It has since grown to include default device order management.
I used wolfinabox/Windows-Mic-Volume-Locker for years before deciding to write my own solution.
I was inspired by AntoineGS/teams-status-rs being so amazing in such a lightweight package. I wanted to do something similar, but for volume locking.
Special thanks to:
- Kingloo/volume for the Windows volume control code foundation.
- tauri-apps/tray-icon for the tray icon implementation.
- GitHub Copilot for assisting with the code structure, syntax, and feature implementation.
- @jmb for the great icon design.