Skip to content

Latest commit

 

History

1 Commit

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

BluetoothEditor

A Windows tray app for managing audio output/input devices and paired Bluetooth devices — switch the default endpoint by hotkey, auto-switch to a headset the moment it connects, and toggle each Bluetooth device's ConnectOnStart ("auto-connect") flag.

Features

  • Live device tracking — registers a Core Audio IMMNotificationClient and a WinRT DeviceWatcher, so the app reacts to headsets connecting, docks unplugging, and Windows re-pointing the default endpoint on its own.
  • On-screen banner when a device connects, drops, or becomes the default. Configurable position, monitor, and duration.
  • Hotkey rotation — cycle the default output/input through a chosen set of devices. Disconnected devices are skipped.
  • Auto-switch rules — mark a device to become default as soon as it connects, and optionally revert to the previous device when it drops.
  • Auto-connect toggle — writes ConnectOnStart under HKLM\SYSTEM\CurrentControlSet\Services\BTHPORT\Parameters\Devices\<MAC> via a small elevated helper, then restarts the Bluetooth radio or service so it takes effect.
  • Per-device rename and custom icons, tray quick-switch menu, start-with-Windows.

Layout

Path What it is
src/BluetoothEditor The WPF app (.NET 9, net9.0-windows10.0.19041.0)
src/BluetoothEditor.ElevatedHelper Console helper that runs elevated to write HKLM and restart the radio
tests/BluetoothEditor.Tests xUnit tests over the pure logic (rotation, BT matching, icon guessing, sorting)
installer/setup.iss Inno Setup script

The app runs unelevated. Only the auto-connect toggle needs admin, which is why it shells out to BluetoothEditor.ElevatedHelper.exe with runas rather than elevating the whole app.

Build

dotnet build BluetoothEditor.sln
dotnet test BluetoothEditor.sln

Publish

Build output is not committed. To produce the portable (framework-dependent) build:

dotnet publish src/BluetoothEditor/BluetoothEditor.csproj -c Release -o publish-portable-fdd
dotnet publish src/BluetoothEditor.ElevatedHelper/BluetoothEditor.ElevatedHelper.csproj -c Release -o publish-portable-fdd

Then, for the installer (requires Inno Setup 6):

ISCC installer\setup.iss

Runtime data

Settings and custom icons live in %APPDATA%\BluetoothEditor\ — not next to the executable, so they survive upgrades and work for non-admin users.

Requirements

About

Windows tray app for switching audio devices and managing Bluetooth auto-connect

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages