-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/


-- | Third party extensions for xmonad with wacky dependencies
--   
--   Various modules for xmonad that cannot be added to xmonad-contrib
--   because of additional dependencies.
@package xmonad-extras
@version 0.13.0


-- | Similar to XMonad.Util.WindowProperties, but uses posix regular
--   expressions matching instead of exact match.
module XMonad.Util.WindowPropertiesRE

-- | A wrapper for X.U.WindowProperties.Property. Checks using regular
--   expression.
data PropertyRE
RE :: Property -> PropertyRE

-- | Regular expressions matching for ManageHooks
(~?) :: (Functor f) => f String -> String -> f Bool

-- | Similar to XMonad.Util.WindowProperties.propertyToQuery, but uses
--   regexp match instead of exact match
propertyToQueryRE :: Property -> Query Bool

-- | Does given window have this property?
hasPropertyRE :: PropertyRE -> Window -> X Bool
instance GHC.Read.Read XMonad.Util.WindowPropertiesRE.PropertyRE
instance GHC.Show.Show XMonad.Util.WindowPropertiesRE.PropertyRE
instance XMonad.Layout.LayoutBuilderP.Predicate XMonad.Util.WindowPropertiesRE.PropertyRE Graphics.X11.Types.Window


-- | A hook that remembers per-window keyboard layouts and switches them on
--   focus changes.
module XMonad.Hooks.PerWindowKbdLayout
perWindowKbdLayout :: Event -> X All
instance GHC.Show.Show XMonad.Hooks.PerWindowKbdLayout.LayoutStorage
instance GHC.Read.Read XMonad.Hooks.PerWindowKbdLayout.LayoutStorage
instance Foreign.Storable.Storable XMonad.Hooks.PerWindowKbdLayout.XkbStateRec
instance XMonad.Core.ExtensionClass XMonad.Hooks.PerWindowKbdLayout.LayoutStorage


-- | A minimal interface to the "amixer" command-line utility.
module XMonad.Actions.Volume

-- | Toggle mutedness on the default channels. Returns <a>True</a> when
--   this attempts to mute the speakers and <a>False</a> when this attempts
--   to unmute the speakers.
toggleMute :: MonadIO m => m Bool

-- | Raise the volume on the default channels the given number of
--   percentage points. Returns the volume it attempts to set.
raiseVolume :: MonadIO m => Double -> m Double

-- | Lower the volume on the default channels the given number of
--   percentage points. Returns the volume it attempts to set.
lowerVolume :: MonadIO m => Double -> m Double

-- | Get the geometric mean of the volumes on the default channels.
getVolume :: MonadIO m => m Double

-- | Get the mutedness of the default channels. Returns <a>True</a> if any
--   of the channels are muted, and <a>False</a> otherwise.
getMute :: MonadIO m => m Bool

-- | Get both the volume and the mutedness of the default channels.
getVolumeMute :: MonadIO m => m (Double, Bool)

-- | Attempt to set the default channels to a volume given in percentage of
--   maximum.
setVolume :: MonadIO m => Double -> m ()

-- | Attempt to set the muting on the default channels.
setMute :: MonadIO m => Bool -> m ()

-- | Attempt to set both the volume in percent and the muting on the
--   default channels.
setVolumeMute :: MonadIO m => Double -> Bool -> m ()

-- | Apply a function to the volume of the default channels, and return the
--   modified value.
modifyVolume :: MonadIO m => (Double -> Double) -> m Double

-- | Apply a function to the muting on the default channels, and return the
--   modified value.
modifyMute :: MonadIO m => (Bool -> Bool) -> m Bool

-- | Apply a function to both the volume and the muting of the default
--   channels, and return the modified values.
modifyVolumeMute :: MonadIO m => (Double -> Bool -> (Double, Bool)) -> m (Double, Bool)

-- | Channels are what amixer calls "simple controls". The most common ones
--   are "Master", "Wave", and "PCM", so these are included in
--   <a>defaultChannels</a>. It is guaranteed to be safe to pass channel
--   names that don't exist on the default sound device to the *Channels
--   family of functions.
defaultChannels :: [String]
toggleMuteChannels :: MonadIO m => [String] -> m Bool
raiseVolumeChannels :: MonadIO m => [String] -> Double -> m Double
lowerVolumeChannels :: MonadIO m => [String] -> Double -> m Double
getVolumeChannels :: MonadIO m => [String] -> m Double
getMuteChannels :: MonadIO m => [String] -> m Bool
getVolumeMuteChannels :: MonadIO m => [String] -> m (Double, Bool)
setVolumeChannels :: MonadIO m => [String] -> Double -> m ()
setMuteChannels :: MonadIO m => [String] -> Bool -> m ()
setVolumeMuteChannels :: MonadIO m => [String] -> Double -> Bool -> m ()
modifyVolumeChannels :: MonadIO m => [String] -> (Double -> Double) -> m Double
modifyMuteChannels :: MonadIO m => [String] -> (Bool -> Bool) -> m Bool
modifyVolumeMuteChannels :: MonadIO m => [String] -> (Double -> Bool -> (Double, Bool)) -> m (Double, Bool)

-- | Default options for displaying the volume.
defaultOSDOpts :: Bool -> String

-- | Helper function to output current volume via osd_cat. (Needs the
--   osd_cat executable). The second parameter is passed True when the
--   speakers are muted and should return the options to pass to osd_cat.
osdCat :: MonadIO m => Double -> (Bool -> String) -> m ()
