xmonad-volume 0.1.0.1 → 0.1.1.0
raw patch · 3 files changed
+24/−22 lines, 3 filesdep ~alsa-mixerdep ~basePVP: major bump suggested
API removals or changes: PVP suggests a major version bump
Dependency ranges changed: alsa-mixer, base
API changes (from Hackage documentation)
- XMonad.Util.ALSA: lowerVolume :: MonadIO m => Integer -> m ()
+ XMonad.Util.ALSA: lowerVolume :: MonadIO m => Int -> m ()
- XMonad.Util.ALSA: raiseVolume :: MonadIO m => Integer -> m ()
+ XMonad.Util.ALSA: raiseVolume :: MonadIO m => Int -> m ()
Files
- CHANGELOG.md +4/−0
- src/XMonad/Util/ALSA.hs +13/−15
- xmonad-volume.cabal +7/−7
CHANGELOG.md view
@@ -1,5 +1,9 @@ # xmonad-volume +## 0.1.1.0++ * Work with `alsa-mixer == 0.3`+ ## 0.1.0.1 * Generalize type signatures
src/XMonad/Util/ALSA.hs view
@@ -1,5 +1,4 @@ {-# OPTIONS_GHC -fno-warn-incomplete-uni-patterns #-}-{-# LANGUAGE TupleSections #-} -- | This uses ALSA to control the volume. module XMonad.Util.ALSA ( toggleMute@@ -9,7 +8,6 @@ , volumeKeys ) where -import Control.Arrow (first) import Control.Composition import Control.Monad import Control.Monad.IO.Class@@ -23,31 +21,32 @@ toggleMute = liftIO $ withMixer "default" $ \mixer -> do Just control <- getControlByName mixer "Master"- let Just playbackSwitch = playback $ switch control+ let Just playbackSwitch = playback (switch control) Just sw <- getChannel FrontLeft playbackSwitch setChannel FrontLeft playbackSwitch $ not sw +-- TODO: upstream replacement of 'Integer'? changeVolume :: MonadIO m => Channel- -> Integer -- ^ Percentage+ -> Int -- ^ Percentage -> m () changeVolume channel i = liftIO $ withMixer "default" $ \mixer -> do Just control <- getControlByName mixer "Master" let Just playbackVolume = playback $ volume control- (min', max') <- getRange playbackVolume- Just vol <- getChannel channel $ value playbackVolume+ (min', max') <- both fromIntegral <$> getRange playbackVolume+ Just vol <- fmap fromIntegral <$> getChannel channel (value playbackVolume) let i' = i * ((max' - min') `div` 100) when ((i' > 0 && vol < max') || (i' < 0 && vol > min')) $- setChannel channel (value playbackVolume) $ vol + i'+ setChannel channel (value playbackVolume) $ fromIntegral (vol + i') -- | Raise volume-raiseVolume :: MonadIO m => Integer -> m ()+raiseVolume :: MonadIO m => Int -> m () raiseVolume = axe [ changeVolume FrontLeft, changeVolume FrontRight ] -- | Lower volume-lowerVolume :: MonadIO m => Integer -> m ()-lowerVolume = axe [ changeVolume FrontLeft, changeVolume FrontRight ] . negate+lowerVolume :: MonadIO m => Int -> m ()+lowerVolume = raiseVolume . negate -- | Given your keymaps, add volume control keybindings. volumeKeys :: MonadIO m => M.Map (KeyMask, KeySym) (m ()) -> M.Map (KeyMask, KeySym) (m ())@@ -55,8 +54,7 @@ where mediaKeyMap = M.fromList volumeKeyList volumeKeyList :: MonadIO m => [((KeyMask, KeySym), m ())]-volumeKeyList = go <$> [ (xF86XK_AudioMute, toggleMute)- , (xF86XK_AudioLowerVolume, lowerVolume 5)- , (xF86XK_AudioRaiseVolume, raiseVolume 5)- ]- where go = first (0 ,)+volumeKeyList = [ ((0, xF86XK_AudioMute), toggleMute)+ , ((0, xF86XK_AudioLowerVolume), lowerVolume 5)+ , ((0, xF86XK_AudioRaiseVolume), raiseVolume 5)+ ]
xmonad-volume.cabal view
@@ -1,6 +1,6 @@ cabal-version: 1.18 name: xmonad-volume-version: 0.1.0.1+version: 0.1.1.0 license: BSD3 license-file: LICENSE copyright: Copyright: (c) 2018 Vanessa McHale@@ -36,21 +36,21 @@ ghc-options: -Wall build-depends: base >=4.8 && <5,- alsa-mixer -any,+ alsa-mixer >=0.3, X11 -any, containers -any,- composition-prelude -any- + composition-prelude >=1.3.0.0+ if flag(development) ghc-options: -Werror- + if !impl(ghc >=8.0) build-depends: transformers -any- + if impl(ghc >=8.0) ghc-options: -Wincomplete-uni-patterns -Wincomplete-record-updates -Wredundant-constraints -Widentities- + if impl(ghc >=8.4) ghc-options: -Wmissing-export-lists