Copyright | 2009 Adam Vogt <vogt.adam@gmail.com> |
---|---|
License | BSD3-style (see LICENSE) |
Maintainer | Adam Vogt <vogt.adam@gmail.com> |
Stability | unstable |
Portability | unportable |
Safe Haskell | None |
Language | Haskell2010 |
A wrapper for keybinding configuration that can list the available keybindings.
Note that xmonad>=0.11 has by default a list of the default keybindings
bound to M-S-/
or M-?
.
Synopsis
- sendMessage' :: (Message a, Show a) => a -> NamedAction
- spawn' :: String -> NamedAction
- submapName :: HasName a => [((KeyMask, KeySym), a)] -> NamedAction
- addDescrKeys :: forall b1 b (l :: Type -> Type). (HasName b1, HasName b) => ((KeyMask, KeySym), [((KeyMask, KeySym), NamedAction)] -> b) -> (XConfig Layout -> [((KeyMask, KeySym), b1)]) -> XConfig l -> XConfig l
- addDescrKeys' :: forall b (l :: Type -> Type). HasName b => ((KeyMask, KeySym), [((KeyMask, KeySym), NamedAction)] -> b) -> (XConfig Layout -> [((KeyMask, KeySym), NamedAction)]) -> 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 = 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 def { 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 Source #
sendMessage
but add a description that is show message
. Note that not
all messages have show instances.
submapName :: HasName a => [((KeyMask, KeySym), a)] -> NamedAction Source #
submap
, but propagate the descriptions of the actions. Does this belong
in XMonad.Actions.Submap?
addDescrKeys :: forall b1 b (l :: Type -> Type). (HasName b1, HasName b) => ((KeyMask, KeySym), [((KeyMask, KeySym), NamedAction)] -> b) -> (XConfig Layout -> [((KeyMask, KeySym), b1)]) -> XConfig l -> XConfig l Source #
Merge the supplied keys with defaultKeysDescr
, also adding a keybinding
to run an action for showing the keybindings.
addDescrKeys' :: forall b (l :: Type -> Type). HasName b => ((KeyMask, KeySym), [((KeyMask, KeySym), NamedAction)] -> b) -> (XConfig Layout -> [((KeyMask, KeySym), NamedAction)]) -> XConfig l -> XConfig l Source #
Without merging with defaultKeysDescr
xMessage :: [((KeyMask, KeySym), NamedAction)] -> NamedAction Source #
An action to send to addDescrKeys
for showing the keybindings. See also showKm
and showKmSimple
showKmSimple :: [((KeyMask, KeySym), NamedAction)] -> [[Char]] Source #
noName :: X () -> NamedAction Source #
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 ()
separator :: ((KeyMask, KeySym), NamedAction) Source #
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
(^++^) :: (HasName b, HasName b1) => [(d, b)] -> [(d, b1)] -> [(d, NamedAction)] Source #
Combine keymap lists with actions that may or may not have names
data NamedAction Source #
An existential wrapper so that different types can be combined in lists, and maps
HasName a => NamedAction a |
Instances
HasName NamedAction Source # | |
Defined in XMonad.Util.NamedActions showName :: NamedAction -> [String] getAction :: NamedAction -> X () | |
HasName (NamedAction, String) Source # | |
Defined in XMonad.Util.NamedActions showName :: (NamedAction, String) -> [String] getAction :: (NamedAction, String) -> X () |
getAction
Instances
HasName NamedAction Source # | |
Defined in XMonad.Util.NamedActions showName :: NamedAction -> [String] getAction :: NamedAction -> X () | |
HasName (IO ()) Source # | |
HasName (X ()) Source # | |
HasName [Char] Source # | |
HasName (X (), String) Source # | |
HasName (X (), [String]) Source # | |
HasName (NamedAction, String) Source # | |
Defined in XMonad.Util.NamedActions showName :: (NamedAction, String) -> [String] getAction :: (NamedAction, String) -> X () |
defaultKeysDescr :: XConfig Layout -> [((KeyMask, KeySym), NamedAction)] Source #
A version of the default keys from the default configuration, but with
NamedAction
instead of X ()