diff --git a/src/widgets/audio/alsa_sound.rs b/src/widgets/audio/alsa_sound.rs index fe93ecd..88efa21 100644 --- a/src/widgets/audio/alsa_sound.rs +++ b/src/widgets/audio/alsa_sound.rs @@ -1,8 +1,7 @@ - use crate::color::Color; use crate::widgets::bar_widget::{BarWidget, BarWidgetImpl}; -use alsa::mixer::{ Mixer, Selem, SelemChannelId, SelemId }; +use alsa::mixer::{Mixer, Selem, SelemChannelId, SelemId}; const CARD_NAME: &'static str = "default"; const SELEM_NAME: &'static str = "Master"; @@ -12,7 +11,10 @@ const SELEM_ID: u32 = 0u32; fn alsa_error_to_io_error(fail: &'static str, err: &alsa::Error) -> ::std::io::Error { let kind = ::std::io::ErrorKind::Other; let func = err.func(); - let errno = err.errno().map(|errno| format!("; errno = {}", errno)).unwrap_or(String::new()); + let errno = err + .errno() + .map(|errno| format!("; errno = {}", errno)) + .unwrap_or(String::new()); return ::std::io::Error::new(kind, format!("{}: {}{}", fail, func, errno)); } @@ -51,35 +53,32 @@ impl Alsa { } } pub fn get_master_volume(&self) -> ::std::io::Result { - self.get_master() - .and_then(|master| { - let (min, max) = master.get_playback_volume_range(); - master.get_playback_volume(SelemChannelId::mono()) - .map(|volume| alsa_volume_to_f32(volume, min, max)) - .map_err(|e| alsa_error_to_io_error("Failed to get `Master` volume", &e)) - }) + let master = self.get_master()?; + let (min, max) = master.get_playback_volume_range(); + master + .get_playback_volume(SelemChannelId::mono()) + .map(|volume| alsa_volume_to_f32(volume, min, max)) + .map_err(|e| alsa_error_to_io_error("Failed to get `Master` volume", &e)) } pub fn set_master_volume(&self, volume: f32) -> ::std::io::Result<()> { - self.get_master() - .and_then(|master| { - let (min, max) = master.get_playback_volume_range(); - let volume = f32_to_alsa_volume(volume, min, max); - master.set_playback_volume_all(volume) - .map_err(|e| alsa_error_to_io_error("Failed to set `Master` volume", &e)) - }) + let master = self.get_master()?; + let (min, max) = master.get_playback_volume_range(); + let volume = f32_to_alsa_volume(volume, min, max); + master + .set_playback_volume_all(volume) + .map_err(|e| alsa_error_to_io_error("Failed to set `Master` volume", &e)) } pub fn inc_master_volume(&self, diff: f32) -> ::std::io::Result<()> { - self.get_master() - .and_then(|master| { - let (min, max) = master.get_playback_volume_range(); - master.get_playback_volume(SelemChannelId::mono()) - .and_then(|volume| { - let volume = alsa_volume_to_f32(volume, min, max); - let volume = f32_to_alsa_volume(volume + diff, min, max); - master.set_playback_volume_all(volume) - }) - .map_err(|e| alsa_error_to_io_error("Failed to inc/dec `Master` volume", &e)) + let master = self.get_master()?; + let (min, max) = master.get_playback_volume_range(); + master + .get_playback_volume(SelemChannelId::mono()) + .and_then(|volume| { + let volume = alsa_volume_to_f32(volume, min, max); + let volume = f32_to_alsa_volume(volume + diff, min, max); + master.set_playback_volume_all(volume) }) + .map_err(|e| alsa_error_to_io_error("Failed to inc/dec `Master` volume", &e)) } } @@ -90,7 +89,7 @@ impl BarWidgetImpl for Alsa { fn value(&self) -> f32 { match self.get_master_volume() { Ok(v) => v, - Err(e) => panic!(e) + Err(e) => panic!(e), } } fn color(&self) -> Color {