module XMonad.Util.MediaKeys (
mediaKeys
, audioPrev
, audioNext
, audioPlayPause
) where
import Graphics.X11.ExtraTypes.XF86
import Graphics.X11.Types
import XMonad.Core
import XMonad.Util.Volume
import qualified Data.Map as M
import Data.Monoid
mediaKeys :: M.Map (KeyMask, KeySym) (X ()) -> M.Map (KeyMask, KeySym) (X ())
mediaKeys = M.fromList . (<>) mediaKeyList . M.toList
mediaKeyList :: [((KeyMask, KeySym), X ())]
mediaKeyList = [ ((0, xF86XK_AudioNext), audioNext)
, ((0, xF86XK_AudioPrev), audioPrev)
, ((0, xF86XK_AudioPlay), audioPlayPause)
, ((0, xF86XK_AudioMute), toggleMute)
, ((0, xF86XK_AudioLowerVolume), lowerVolume (5 :: Word))
, ((0, xF86XK_AudioRaiseVolume), raiseVolume (5 :: Word))
]
sp :: String -> X ()
sp = spawn . (<>) "dbus-send --print-reply --dest=org.mpris.MediaPlayer2.spotify /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player."
audioNext :: X ()
audioNext = sp "Next"
audioPrev :: X ()
audioPrev = sp "Previous"
audioPlayPause :: X ()
audioPlayPause = sp "PlayPause"