Skip to content

settings: Add ability to select audio input/output devices for collab#49015

Merged
kubkon merged 21 commits intomainfrom
kubkon/audio-selection-settings
Feb 12, 2026
Merged

settings: Add ability to select audio input/output devices for collab#49015
kubkon merged 21 commits intomainfrom
kubkon/audio-selection-settings

Conversation

@kubkon
Copy link
Member

@kubkon kubkon commented Feb 12, 2026

This PR adds ability to select and test audio input/output devices for use in collaboration setting (which is what the team at Zed relies heavily on). Currently, we only ever used whatever the system default is and it worked well until it didn't - for some reason, when I am on my Linux laptop, I am unable to force Zed to use my external mic + headphones via external USB audio interface. With this PR, now I can list all available devices and select the one I want.

There are still a couple of caveats that we should be aware of:

  • I've decided to list all available devices meaning on Linux it is quite possible that you may discover that what your desktop environment is reporting to you is a significantly shorter list than what your sound framework/hw is actually exposing. I think this makes sense given my inexperience with audio drivers/devices and frameworks on various OSes so that we get full control over what is available with the goal of being able to come up with some filtering heuristic as we go along.
  • We currently populate the list of available audio devices only once at startup meaning if you unplug your device while you have Zed running this will not register until you restart Zed which is a PITA. However, in order to keep the changes manageable I thought it would be best to do minimal work in this regard now, and iterate on this some more in the near future. After all, we don't really monitor device changes on any platform except macOS anyhow, so it might be the case that when I get round to implementing this I will have the opportunity to tackle both at the same time.
  • In order to get a valid list of all audio devices using cpal crate (which is the building block of rodio), I had to bump cpal to 0.17, and pin rodio to a more recent commit sha as a result, so if you see any regressions, lemme know and/or feel free to revert this PR.
  • Finally, I've done my best to integrate this with the settings UI, but I am sure more could be done in terms of styling, etc.

Some screenshots:

Screenshot From 2026-02-12 11-40-04 Screenshot From 2026-02-12 11-40-16

Release Notes:

  • Added ability to select audio input/output devices as part of Collaboration page in Settings. Added ability to test selected devices with a simple playback loop routing input directly into output for easier debugging of your audio devices.

@cla-bot cla-bot bot added the cla-signed The user has signed the Contributor License Agreement label Feb 12, 2026
@zed-community-bot zed-community-bot bot added the staff Pull requests authored by a current member of Zed staff label Feb 12, 2026
@kubkon kubkon force-pushed the kubkon/audio-selection-settings branch from 5ef6fb4 to 3bbaf6e Compare February 12, 2026 11:47
@kubkon kubkon merged commit e792648 into main Feb 12, 2026
27 checks passed
@kubkon kubkon deleted the kubkon/audio-selection-settings branch February 12, 2026 13:27
morgankrey added a commit that referenced this pull request Feb 19, 2026
Auto-applied queued documentation suggestions from:
- PR #48908
- PR #48909
- PR #48910
- PR #48912
- PR #48930
- PR #44794
- PR #48763
- PR #45073
- PR #48495
- PR #49374
- PR #49139
- PR #48780
- PR #48619
- PR #48978
- PR #48962
- PR #48988
- PR #47860
- PR #49015
- PR #47095
- PR #47475
- PR #48542
- PR #46766
- PR #47754
- PR #48807
- PR #44506
- PR #49051
- PR #49069
- PR #48842
- PR #48851
- PR #48736
- PR #47673
- PR #49094
- PR #49098
- PR #49622

Generated with script/docs-suggest-publish for human review in draft PR.
target_os = "freebsd"
))]
{
let source = rodio::source::Zero::<f32>::new(CHANNEL_COUNT, SAMPLE_RATE);
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
let source = rodio::source::Zero::<f32>::new(CHANNEL_COUNT, SAMPLE_RATE);
let source = rodio::source::Zero::new(CHANNEL_COUNT, SAMPLE_RATE);

this change broke build for MinGW. I'll send a follow-up PR after small testing

morgankrey added a commit that referenced this pull request Feb 25, 2026
Auto-applied queued documentation suggestions from:
- PR #48908
- PR #48909
- PR #48910
- PR #48912
- PR #48930
- PR #44794
- PR #48763
- PR #45073
- PR #48495
- PR #49374
- PR #49139
- PR #48780
- PR #48619
- PR #48978
- PR #48962
- PR #48988
- PR #47860
- PR #49015
- PR #47095
- PR #47475
- PR #48542
- PR #46766
- PR #47754
- PR #48807
- PR #44506
- PR #49051
- PR #49069
- PR #48842
- PR #48851
- PR #48736
- PR #47673
- PR #49094
- PR #49098
- PR #49622
- PR #49554
- PR #49710
- PR #49716
- PR #49732
- PR #49788
- PR #49876
- PR #49902
- PR #49910
- PR #49390
- PR #50027

Generated with script/docs-suggest-publish for human review in draft PR.
morgankrey added a commit that referenced this pull request Feb 25, 2026
Auto-applied documentation from:
- PR #48619: agent single_file_review default change
- PR #48978: enriched symbol names in outline
- PR #49015: audio device selection for collab
- PR #47095: MCP error handling
- PR #47475: OpenRouter default model requirement

Skipped (already documented):
- PR #49139, PR #48780, PR #48988, PR #47860
morgankrey added a commit that referenced this pull request Feb 25, 2026
Auto-applied queued documentation suggestions from:
- PR #48908
- PR #48909
- PR #48910
- PR #48912
- PR #48930
- PR #44794
- PR #48763
- PR #45073
- PR #48495
- PR #49374
- PR #49139
- PR #48780
- PR #48619
- PR #48978
- PR #48962
- PR #48988
- PR #47860
- PR #49015
- PR #47095
- PR #47475
- PR #48542
- PR #46766
- PR #47754
- PR #48807
- PR #44506
- PR #49051
- PR #49069
- PR #48842
- PR #48851
- PR #48736
- PR #47673
- PR #49094
- PR #49098
- PR #49622
- PR #49554
- PR #49710
- PR #49716
- PR #49732
- PR #49788
- PR #49876
- PR #49902
- PR #49910
- PR #49390
- PR #50027

Generated with script/docs-suggest-publish for human review in draft PR.
morgankrey added a commit that referenced this pull request Feb 25, 2026
Auto-applied documentation from:
- PR #48619: agent single_file_review default change
- PR #48978: enriched symbol names in outline
- PR #49015: audio device selection for collab
- PR #47095: MCP error handling
- PR #47475: OpenRouter default model requirement

Skipped (already documented):
- PR #49139, PR #48780, PR #48988, PR #47860
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

cla-signed The user has signed the Contributor License Agreement staff Pull requests authored by a current member of Zed staff

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants