feat: add dynamic audio output handling (#985)#1034
feat: add dynamic audio output handling (#985)#1034colinchambachan wants to merge 2 commits intoTheBoredTeam:devfrom
Conversation
What do you mean by this? |
Currently the notch displays the same speaker icon in the HUD volume slider irrespective of the device connected. This PR updates the behaviour s.t. if Airpods are connected, an Airpods icon is displayed (same with Airpods Pro, Airpods Max, as well as wired and bluetooth outputs as well). |
|
That’s what I thought, but what confused me was that you also previously wrote that "non-AirPods Bluetooth devices [would show] AirPods-style icons," and that this change fixes that behaviour. |
Oh good catch, I meant the opposite - updated now |
Alexander5015
left a comment
There was a problem hiding this comment.
Please rebase and fix conflicts.
d848aea to
5326abe
Compare
| case kAudioDeviceTransportTypeUSB: | ||
| return .wiredHeadphones | ||
| case kAudioDeviceTransportTypeHDMI, kAudioDeviceTransportTypeDisplayPort: | ||
| return isHeadphonesLike ? .wiredHeadphones : .externalSpeaker |
There was a problem hiding this comment.
What is the point of this check? My understanding is this will always be an externalSpeaker if its a display, right?
| case kAudioDeviceTransportTypeBuiltIn: | ||
| return isHeadphonesLike ? .wiredHeadphones : .builtInSpeaker | ||
| case kAudioDeviceTransportTypeBluetooth, kAudioDeviceTransportTypeBluetoothLE: | ||
| return .bluetoothHeadphones |
There was a problem hiding this comment.
I think some improvements can be made here, but I have to look into this more. This is more of a note to me than a blocker for merging.
Summary
This PR updates volume icon behavior to reflect the active audio output route instead of using a single static/speaker-only icon path. Closes #985
What changed
VolumeManager:volumeHUDSymbol(for:)) so all volume surfaces use the same logic.SystemEventIndicatorModifierInlineHUDOpenNotchHUDNotchHomeViewWhy
The previous behavior did not reliably reflect actual output hardware (for example, AirPods Bluetooth devices showing non-AirPods-style icon (general speaker).
macOS support
Testing
Manual validation performed for:
AirPods model-specific paths are implemented via name matching and need hardware verification on:
Below screenshots include UI via hardcoded changes for demonstration purposes:

Risk / Notes