Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

AbsVol — one-click Bluetooth Absolute Volume toggle for Windows

CI License: MIT

Turn Bluetooth Absolute Volume on or off from a system tray icon — instead of editing the registry and rebooting every time.

Absolute Volume ties the Windows volume slider directly to your Bluetooth headphones' or speaker's internal volume. On many devices that means giant volume jumps between slider steps, a first step that's already too loud, or broken dual-knob control. The fix is to disable it — but Windows gives you no UI for it at all: the only switch is a registry value, and it only takes effect after the device reconnects. AbsVol turns it into one click.

  • Works on Windows 10 and 11, for any Bluetooth audio device
  • Tray icon shows the state — blue = Absolute Volume on, orange = disabled
  • Apply now restarts the Bluetooth radio so the change takes effect without opening Settings
  • Tiny (~150 KB), no runtime required, fully offline (no network, no data collection), open source

Usage

Launch the app and it sits in the notification area (look under the overflow flyout on Windows 11 and drag it onto the taskbar to pin it):

  • Left-click the icon — toggle Absolute Volume
  • Right-click — menu: Disable absolute volume, Apply now (restart Bluetooth), Skip UAC prompts (one-time setup), Exit

The registry value lives under HKLM, so writing it needs administrator rights. By default each toggle shows one UAC prompt; the app itself runs unelevated.

Skipping the UAC prompt (optional)

The right-click menu has "Skip UAC prompts (one-time setup)". Choosing it registers a Task Scheduler task (AbsVol Toggle, run with highest privileges) after a single UAC prompt; from then on each toggle triggers that task and no prompt appears. The same menu item removes the task and restores per-toggle prompts.

This is a deliberate convenience-vs-security tradeoff: a registered highest-privileges task that an unelevated app can trigger is, by design, a way to change the setting without re-consenting each time. It's opt-in, clearly labelled, and fully reversible — leave it off if you'd rather approve each toggle. Nothing is set up unless you choose it.

How it works

Absolute Volume is controlled by a single registry value:

HKLM\SYSTEM\CurrentControlSet\Control\Bluetooth\Audio\AVRCP\CT
    DisableAbsoluteVolume (DWORD)   0 = on (Windows default), 1 = disabled

AbsVol writes exactly that value — nothing else. No services, no drivers, no network. Because the Bluetooth stack only reads it when a device connects, the Apply now menu item bounces every Bluetooth radio off and on through the WinRT Windows.Devices.Radios API so the reconnecting device picks up the change immediately (your devices briefly disconnect).

The unelevated tray app performs the privileged write in one of two ways: by relaunching itself elevated for a single --set (default, one UAC prompt), or — if you opted into setup — by triggering the highest-privileges scheduled task, whose action inverts the current value (--apply).

Build

Rust with the MSVC toolchain is the supported build environment:

rustup default stable-x86_64-pc-windows-msvc
cargo build --release

The exe lands in target\release\absvol.exe. Copy it anywhere and/or make a shortcut.

The x86_64-pc-windows-gnu target can't currently build the windows crate's raw-dylib import libraries with rustup's bundled binutils, so use the MSVC target (it needs the Visual Studio Build Tools "Desktop development with C++" workload installed).

Smart App Control: if SAC is enabled, Windows blocks locally-built unsigned executables, so both building and running this tool require SAC to be off.

License

MIT — see LICENSE.

About

One-click Windows system-tray toggle for Bluetooth Absolute Volume

Topics

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages