ShowAudioDevice
Tray indicator and one-click switcher for the default playback device
ShowAudioDevice
A tiny Windows tray utility that shows which playback device is the default — headphones, speakers or a monitor over HDMI/DisplayPort — and lets you switch with one click.
- Tray icon = current default playback device; hover for the device name.
- Left click toggles between headphones and speakers (the first device of the other kind).
- Right click lists every active playback device; the bold one is the default.
- Reacts instantly to device changes (Core Audio notifications), no polling.
- Follows the taskbar theme, starts with Windows on request, updates itself.
Command line
The same exe doubles as a headless switcher for hotkeys, AutoHotkey or a Stream Deck (it never interferes with the running tray instance):
ShowAudioDevice --list
ShowAudioDevice --set "USB PnP"
ShowAudioDevice --toggle
--set takes the exact name or a case-insensitive substring; --toggle switches between headphones and
speakers like a left click. Exit codes: 0 ok, 1 switching failed, 2 no such device.
Settings
%APPDATA%\ShowAudioDevice\settings.json (created on first start, Edit settings… in the menu):
{
"headphonePatterns": ["GS3", "headphone", "headset", "earbuds", "buds", "airpods"],
"monitorPatterns": ["NVIDIA High Definition Audio", "AMD High Definition Audio", "Display Audio", "HDMI", "DisplayPort", "monitor"],
"notifyOnChange": false,
"logLevel": "Information",
"updateChannel": null
}
A device whose name contains any of headphonePatterns (case-insensitive) gets the headphones icon,
one matching monitorPatterns the monitor icon, everything else the speaker. Left click toggles
headphones ⇄ speakers (a monitor only when no speaker exists). Reload settings applies edits without a restart.
Logs
Daily rolling files in %LOCALAPPDATA%\ShowAudioDevice\logs, 14 days kept; Open log folder in the menu.
Build
dotnet publish src/ShowAudioDevice/ShowAudioDevice.csproj -c Release -r win-x64 -o publish
Produces a single portable ShowAudioDevice.exe. Icons are generated by tools/Make-Icons.ps1.
Releases and updates
azure-pipelines.yml publishes every push to master as a nightly and every v* tag as a stable
release to the TomLabs app store through the shared
publish-desktop-app.yml template (zip, SHA-256, update.json, optional signature, upload). The app
checks https://apps.tomlabs.cz/dl/ShowAudioDevice/<channel>/latest.json on start and every six hours
(TomLabs.AutoUpdate); updateFeed in settings.json
points it elsewhere, e.g. a local store while developing. appstore.json carries the catalogue metadata.
Changelog
See CHANGELOG.md.
Changelog
Changelog
All notable changes to ShowAudioDevice, newest first.
1.0.0 — 2026-09-16
Added
- Switch the default playback device: left-click the tray icon to toggle between headphones and speakers, or pick any active device from the menu.
- Three device kinds with their own icon: headphones, speakers and monitor (HDMI/DisplayPort audio), matched by
headphonePatterns/monitorPatternsin%APPDATA%ShowAudioDevicesettings.json(was hard-coded toGS3). - Tray icon follows the taskbar theme (white glyph on a dark taskbar, dark glyph on a light one).
- Configurable headphone detection:
headphonePatternsin%APPDATA%\ShowAudioDevice\settings.json(was hard-coded toGS3). - "Start with Windows", optional notification bubble on device change, "Edit settings" / "Reload settings".
- Daily rolling log in
%LOCALAPPDATA%\ShowAudioDevice\logs, level set in settings, "Open log folder" in the menu. - About dialog with version, channel and these notes; version also shown in the tray menu.
- Self-update through TomLabs.AutoUpdate (stable / nightly channel) from the TomLabs app store feed;
updateFeedin settings points at another store (local development). - Headless command line for hotkeys and Stream Deck:
--list,--set <device>,--toggle.
Changed
- Device changes are picked up from Core Audio notifications instead of polling every second.
- Portable self-contained single-file build on .NET 10; new application icon.
Fixed
- Icon handles leaked once per second; tray icon updated from a timer thread.