A tiny Windows tray app that lets you control system volume with your mouse wheel.
Hold Left Alt + scroll to change volume. Hold Left Alt + middle-click to mute.
No telemetry. Portable build available.
- Adjust system volume with a modifier key and the mouse wheel
- Toggle mute with the modifier key and middle mouse button
- On-screen volume indicator (OSD)
- Optional start with Windows
- Settings stored locally for the current Windows user
- WheelVolume-v1.0.3-portable-win-x64.zip: Portable build. No installation and no separate .NET install required.
- WheelVolume-v1.0.3-win-x64.zip: Smaller build, but requires the .NET 8 Windows Desktop Runtime.
WheelVolume is currently unsigned, so Windows SmartScreen may show an "Unknown publisher" warning.
The app:
- is open source
- has no telemetry
- does not require admin rights
- stores settings locally
- can be built from source
For extra verification, you can scan the release on VirusTotal or build it yourself.
- Hold the configured modifier key and scroll the mouse wheel to change volume.
- Hold the configured modifier key and click the middle mouse button to toggle mute.
- Right-click the tray icon to change settings or exit.
The default modifier key is Left Alt.
If you enable Start with Windows from a portable build, extract WheelVolume to its final folder first. Windows stores the exact executable path.
Settings are saved for the current Windows user in:
%LOCALAPPDATA%\WheelVolume\settings.json
- Windows 10 / 11
- Portable release: no .NET install required
- Normal release: .NET 8 Windows Desktop Runtime
From the project root, run:
dotnet build -c ReleaseBuilding from source requires the .NET 8 SDK.
dotnet run --project .\WheelVolume.Tests\WheelVolume.Tests.csproj -c ReleaseFor tagged GitHub releases, use the scripted workflow in scripts/RELEASE.md.
Portable release, with the .NET runtime included:
dotnet publish .\WheelVolume\WheelVolume.csproj -c Release -r win-x64 --self-contained true -p:PublishSingleFile=true -p:DebugType=None -p:DebugSymbols=false -o .\release\WheelVolume-portable-win-x64Normal release, requiring the .NET 8 Windows Desktop Runtime:
dotnet publish .\WheelVolume\WheelVolume.csproj -c Release -r win-x64 --self-contained false -p:PublishSingleFile=true -p:DebugType=None -p:DebugSymbols=false -o .\release\WheelVolume-win-x64For a different release version, override version metadata on both publish commands:
dotnet publish .\WheelVolume\WheelVolume.csproj -c Release -r win-x64 --self-contained false -p:Version=1.0.3 -p:FileVersion=1.0.3.0 -p:PublishSingleFile=true -p:DebugType=None -p:DebugSymbols=false -o .\release\WheelVolume-win-x64After building or publishing, run the published executable:
.\release\WheelVolume-win-x64\WheelVolume.exeOr run directly from the build output for quick testing:
.\bin\Debug\net8.0-windows\WheelVolume.exePRs and issues are welcome. Keep changes small and focused.
MIT License. See LICENSE.




