diff --git a/xmonad.hs b/xmonad.hs index fbf7b5e..4c8cef6 100644 --- a/xmonad.hs +++ b/xmonad.hs @@ -23,6 +23,7 @@ import Control.Monad (filterM,liftM, join) import Data.IORef import Data.Monoid import Data.List +import Data.Bits import System.Exit @@ -79,6 +80,7 @@ import XMonad.Actions.Commands import XMonad.Actions.GridSelect import XMonad.Actions.PhysicalScreens import XMonad.Actions.Workscreen +import qualified XMonad.Actions.Submap as SM import XMonad.Prompt import XMonad.Prompt.Shell @@ -545,7 +547,7 @@ myMouseBindings (XConfig {XMonad.modMask = modMask}) = M.fromList $ ------------------------------------------------------------------------ -- Key bindings. Add, modify or remove key bindings here. -- -myKeys toggleFadeSet conf@(XConfig {XMonad.modMask = modMask}) = M.fromList $ +ks toggleFadeSet conf@(XConfig {XMonad.modMask = modMask}) = [ -- launch a terminal -- ((modMask .|. shiftMask, xK_Return), spawn $ XMonad.terminal conf) @@ -702,10 +704,12 @@ myKeys toggleFadeSet conf@(XConfig {XMonad.modMask = modMask}) = M.fromList $ -- mod-[c,w], Switch to screen N -- - ++ - [((m .|. modMask, key), sc >>= screenWorkspace >>= flip whenJust (windows . f)) - | (key, sc) <- zip [xK_c, xK_w] [(screenBy (-1)),(screenBy 1)] - , (f, m) <- [(W.view, 0), (W.shift, shiftMask)]] + {- + -++ + -[((m .|. modMask, key), sc >>= screenWorkspace >>= flip whenJust (windows . f)) + - | (key, sc) <- zip [xK_c, xK_w] [(screenBy (-1)),(screenBy 1)] + - , (f, m) <- [(W.view, 0), (W.shift, shiftMask)]] + -} -- Standard keybindings: -- mod-[1..9], Switch to workspace N @@ -725,3 +729,7 @@ myKeys toggleFadeSet conf@(XConfig {XMonad.modMask = modMask}) = M.fromList $ --, ((modMask .|. shiftMask, xK_l), sendMessage MirrorExpand) ] +modalmode toggleFadeSet conf@(XConfig {XMonad.modMask = modMask}) = [ ((m `xor` modMask, k), a >> (SM.submap . M.fromList $ modalmode toggleFadeSet conf)) | ((m, k), a) <- ks toggleFad + +myKeys :: IORef (S.Set Window) -> XConfig Layout -> M.Map (KeyMask, KeySym) (X ()) +myKeys toggleFadeSet conf@(XConfig {XMonad.modMask = modMask}) = M.fromList $ ((modMask, xK_w), SM.submap . M.fromList $ (modalmode toggleFadeSet conf)) : (ks toggleFadeSet conf)