diff options
| author | Thomas Tuegel <ttuegel@gmail.com> | 2011-01-13 13:19:59 -0600 | 
|---|---|---|
| committer | Thomas Tuegel <ttuegel@gmail.com> | 2011-01-13 13:19:59 -0600 | 
| commit | 01b569b0b39d678e52009e590061902d392ca25e (patch) | |
| tree | d05662388aac202959b58bc50df7e0f25f5bb717 | |
| parent | 0d9c121385d428d0b9ba82aa956ca5123e395f09 (diff) | |
| download | xmobar-01b569b0b39d678e52009e590061902d392ca25e.tar.gz xmobar-01b569b0b39d678e52009e590061902d392ca25e.tar.bz2  | |
Added more graceful failure strategies to volume monitor.
| -rw-r--r-- | src/Plugins/Monitors/Volume.hs | 18 | 
1 files changed, 12 insertions, 6 deletions
diff --git a/src/Plugins/Monitors/Volume.hs b/src/Plugins/Monitors/Volume.hs index 960b5e4..380df30 100644 --- a/src/Plugins/Monitors/Volume.hs +++ b/src/Plugins/Monitors/Volume.hs @@ -93,10 +93,16 @@ runVolume mixerName controlName argv = do          switchControl = fromJust $ maybe (playback $ switch control) Just                                           (common $ switch control)      (lo, hi) <- io $ getRange volumeControl -    val <- liftM fromJust $ io $ getChannel FrontLeft $ value volumeControl -    db <- liftM fromJust $ io $ getChannel FrontLeft $ dB volumeControl -    sw <- liftM fromJust $ io $ getChannel FrontLeft $ switchControl -    p <- formatVol val lo hi -    d <- formatDb opts $ fromIntegral db / 100.0 -    s <- formatSwitch opts sw +    val <- io $ getChannel FrontLeft $ value volumeControl +    db <- io $ getChannel FrontLeft $ dB volumeControl +    sw <- io $ getChannel FrontLeft $ switchControl +    p <- case val of +             Just x -> formatVol x lo hi +             Nothing -> formatVol hi lo hi +    d <- case db of +             Just x -> formatDb opts $ fromIntegral x / 100.0 +             Nothing -> formatDb opts 0.0 +    s <- case sw of +             Just x -> formatSwitch opts x +             Nothing -> formatSwitch opts True      parseTemplate $ [ p, d, s ]   | 
