5 releases
Uses new Rust 2024
| new 0.1.4 | Jun 3, 2026 |
|---|---|
| 0.1.3 | Jun 3, 2026 |
| 0.1.2 | Apr 3, 2026 |
| 0.1.1 | Mar 30, 2026 |
| 0.1.0 | Mar 30, 2026 |
#7 in #wayle
556 downloads per month
210KB
5K
SLoC
wayle-audio
Reactive PulseAudio integration for managing audio devices and streams.
cargo add wayle-audio
Usage
All fields on AudioService are reactive Property<T> types with .get() for snapshots and .watch() for change streams.
use wayle_audio::AudioService;
use futures::StreamExt;
async fn example() -> Result<(), wayle_audio::Error> {
let audio = AudioService::new().await?;
if let Some(device) = audio.default_output.get() {
println!("Output: {}", device.description.get());
println!("Muted: {}", device.muted.get());
device.set_mute(true).await?;
}
let mut stream = audio.default_output.watch();
while let Some(maybe_device) = stream.next().await {
match maybe_device {
Some(device) => println!("Default output: {}", device.description.get()),
None => println!("No default output device"),
}
}
Ok(())
}
Use AudioService::builder().with_daemon().build().await? to expose the service over D-Bus at com.wayle.Audio1.
License
MIT
Part of wayle-services.
Dependencies
~13–23MB
~383K SLoC