xmonad-contrib-0.9.1: Third party extensions for xmonadContentsIndex
XMonad.Util.NamedActions
Portabilityunportable
Stabilityunstable
MaintainerAdam Vogt <vogt.adam@gmail.com>
Contents
Usage:
Description
A wrapper for keybinding configuration that can list the available keybindings.
Synopsis
sendMessage' :: (Message a, Show a) => a -> NamedAction
spawn' :: String -> NamedAction
submapName :: HasName a => [((KeyMask, KeySym), a)] -> NamedAction
addDescrKeys :: (HasName b1, HasName b) => ((KeyMask, KeySym), [((KeyMask, KeySym), NamedAction)] -> b) -> (XConfig Layout -> [((KeyMask, KeySym), b1)]) -> XConfig l -> XConfig l
xMessage :: [((KeyMask, KeySym), NamedAction)] -> NamedAction
showKmSimple :: [((KeyMask, KeySym), NamedAction)] -> [[Char]]
showKm :: [((KeyMask, KeySym), NamedAction)] -> [String]
noName :: X () -> NamedAction
oneName :: (X (), String) -> NamedAction
addName :: String -> X () -> NamedAction
separator :: ((KeyMask, KeySym), NamedAction)
subtitle :: String -> ((KeyMask, KeySym), NamedAction)
(^++^) :: (HasName b, HasName b1) => [(d, b)] -> [(d, b1)] -> [(d, NamedAction)]
data NamedAction = forall a . HasName a => NamedAction a
class HasName a
defaultKeysDescr :: XConfig Layout -> [((KeyMask, KeySym), NamedAction)]
Usage:

Here is an example config that demonstrates the usage of sendMessage', mkNamedKeymap, addDescrKeys, and ^++^

 import XMonad
 import XMonad.Util.NamedActions
 import XMonad.Util.EZConfig

 main = xmonad $ addDescrKeys ((mod4Mask, xK_F1), xMessage) myKeys
                    defaultConfig { modMask = mod4Mask }

 myKeys c = (subtitle "Custom Keys":) $ mkNamedKeymap c $
    [("M-x a", addName "useless message" $ spawn "xmessage foo"),
     ("M-c", sendMessage' Expand)]
     ^++^
    [("<XF86AudioPlay>", spawn "mpc toggle" :: X ()),
     ("<XF86AudioNext>", spawn "mpc next")]

Using ^++^, you can combine bindings whose actions are X () as well as actions that have descriptions. However you cannot mix the two in a single list, unless each is prefixed with addName or noName.

If you don't like EZConfig, you can still use ^++^ with the basic XMonad keybinding configuration too.

Also note the unfortunate necessity of a type annotation, since spawn is too general.

sendMessage' :: (Message a, Show a) => a -> NamedAction
sendMessage but add a description that is show message. Note that not all messages have show instances.
spawn' :: String -> NamedAction
spawn but the description is the string passed
submapName :: HasName a => [((KeyMask, KeySym), a)] -> NamedAction
submap, but propagate the descriptions of the actions. Does this belong in XMonad.Actions.Submap?
addDescrKeys :: (HasName b1, HasName b) => ((KeyMask, KeySym), [((KeyMask, KeySym), NamedAction)] -> b) -> (XConfig Layout -> [((KeyMask, KeySym), b1)]) -> XConfig l -> XConfig l
Merge the supplied keys with defaultKeysDescr, also adding a keybinding to run an action for showing the keybindings.
xMessage :: [((KeyMask, KeySym), NamedAction)] -> NamedAction
An action to send to addDescrKeys for showing the keybindings. See also showKm and showKmSimple
showKmSimple :: [((KeyMask, KeySym), NamedAction)] -> [[Char]]
showKm :: [((KeyMask, KeySym), NamedAction)] -> [String]
noName :: X () -> NamedAction
These are just the NamedAction constructor but with a more specialized type, so that you don't have to supply any annotations, for ex coercing spawn to X () from the more general MonadIO m => m ()
oneName :: (X (), String) -> NamedAction
addName :: String -> X () -> NamedAction
separator :: ((KeyMask, KeySym), NamedAction)
For a prettier presentation: keymask, keysym of 0 are reserved for this purpose: they do not happen, afaik, and keysymToString 0 would raise an error otherwise
subtitle :: String -> ((KeyMask, KeySym), NamedAction)
(^++^) :: (HasName b, HasName b1) => [(d, b)] -> [(d, b1)] -> [(d, NamedAction)]
Combine keymap lists with actions that may or may not have names
data NamedAction
An existential wrapper so that different types can be combined in lists, and maps
Constructors
forall a . HasName a => NamedAction a
show/hide Instances
class HasName a
show/hide Instances
defaultKeysDescr :: XConfig Layout -> [((KeyMask, KeySym), NamedAction)]
A version of the default keys from XMonad.Config.defaultConfig, but with NamedAction instead of X ()
Produced by Haddock version 2.6.0