diff options
| author | Sergei Trofimovich <slyfox@gentoo.org> | 2014-03-07 22:19:19 +0300 | 
|---|---|---|
| committer | Sergei Trofimovich <slyfox@gentoo.org> | 2014-03-07 22:19:19 +0300 | 
| commit | 21b3a615d08f6b6019c0e8ab0a3f8f21d0de4204 (patch) | |
| tree | 1f4da1e7070fc7223fbb0ba0b359c6d5a88f396f /src/Plugins/Monitors | |
| parent | 11754ce7bcfece8af410549c016b96c85a8a8390 (diff) | |
| download | xmobar-21b3a615d08f6b6019c0e8ab0a3f8f21d0de4204.tar.gz xmobar-21b3a615d08f6b6019c0e8ab0a3f8f21d0de4204.tar.bz2 | |
src/Plugins/Monitors/Volume.hs: port to alsa-mixer-0.2
Signed-off-by: Sergei Trofimovich <slyfox@gentoo.org>
Diffstat (limited to 'src/Plugins/Monitors')
| -rw-r--r-- | src/Plugins/Monitors/Volume.hs | 26 | 
1 files changed, 14 insertions, 12 deletions
| diff --git a/src/Plugins/Monitors/Volume.hs b/src/Plugins/Monitors/Volume.hs index 76831ff..024292f 100644 --- a/src/Plugins/Monitors/Volume.hs +++ b/src/Plugins/Monitors/Volume.hs @@ -110,11 +110,13 @@ formatDb opts dbi = do  runVolume :: String -> String -> [String] -> Monitor String  runVolume mixerName controlName argv = do      opts <- io $ parseOpts argv -    control <- io $ getControlByName mixerName controlName -    (lo, hi) <- io . liftMaybe $ getRange <$> volumeControl control -    val <- getVal $ volumeControl control -    db <- getDB $ volumeControl control -    sw <- getSw $ switchControl control +    (lo, hi, val, db, sw) <- io $ withMixer mixerName $ \mixer -> do +        control <- getControlByName mixer controlName +        (lo, hi) <- liftMaybe $ getRange <$> volumeControl control +        val <- getVal $ volumeControl control +        db <- getDB $ volumeControl control +        sw <- getSw $ switchControl control +        return (lo, hi, val, db, sw)      p <- liftMonitor $ liftM3 formatVol lo hi val      b <- liftMonitor $ liftM3 formatVolBar lo hi val      d <- getFormatDB opts db @@ -138,18 +140,18 @@ runVolume mixerName controlName argv = do      liftMonitor Nothing = unavailable      liftMonitor (Just m) = m -    getDB :: Maybe Volume -> Monitor (Maybe Integer) +    getDB :: Maybe Volume -> IO (Maybe Integer)      getDB Nothing = return Nothing -    getDB (Just v) = io $ AE.catch (getChannel FrontLeft $ dB v) -                                   (const $ return $ Just 0) +    getDB (Just v) = AE.catch (getChannel FrontLeft $ dB v) +                              (const $ return $ Just 0) -    getVal :: Maybe Volume -> Monitor (Maybe Integer) +    getVal :: Maybe Volume -> IO (Maybe Integer)      getVal Nothing = return Nothing -    getVal (Just v) = io $ getChannel FrontLeft $ value v +    getVal (Just v) = getChannel FrontLeft $ value v -    getSw :: Maybe Switch -> Monitor (Maybe Bool) +    getSw :: Maybe Switch -> IO (Maybe Bool)      getSw Nothing = return Nothing -    getSw (Just s) = io $ getChannel FrontLeft s +    getSw (Just s) = getChannel FrontLeft s      getFormatDB :: VolumeOpts -> Maybe Integer -> Monitor String      getFormatDB _ Nothing = unavailable | 
