2016-03-07 63 views
1

我该怎么做?我尝试以下方法,但它给了我一个错误说我的括号不匹配等。我甚至不知道该功能项是正确的使用Xmonad和自定义键来启动一个函数?

main = xmonad defaultConfig 
    { terminal = "terminator" 
    , modMask  = mod4Mask 
    , borderWidth = 3 
    , layoutHook = myLayout 
    , keys = inskeys 
    } 

inskeys :: XConfig l -> [((KeyMask, KeySym), X())] 
inskeys [email protected](XConfig {modMask = modm}) = 
[ ((mod1Mask,    xK_F2 ), saveCurrentWorkspace) ] 

getLayout :: X (Layout Window) 
getLayout = gets $ W.layout . W.workspace . W.current . windowset 




myLayout = tiled ||| Mirror tiled ||| Full 
    where 
    tiled = spacing 5 $ Tall nmaster delta ratio 
    nmaster = 1 
    ratio = 1/2 
    delta = 3/100 

saveCurrentWorkspace :: X() 
saveCurrentWorkspace = do 
         Layout x <- getLayout 
         liftIO $ writeFile "currentLayout" (show x) 

回答

0

来图定做键启动功能,做到以下几点。 添加到您的xmonad.hs

myAdditionalKeys = [ 
    ((mod1Mask .|. xK_F12), saveCurrentWorkspace), 
] 

并添加

`addtionialKeys myAddtionialKeys` 

在你的“主”函数的结束,就像下面的例子。

main = do 
    xmonad $ defaultConfig 
     { manageHook = manageSpawn <+> myManageHook <+> manageDocks, 
      layoutHook = myLayout, 
      logHook = dynamicLogWithPP xmobarPP { 
        ppOutput = hPutStrLn xmproc, 
        ppLayout = (\ x -> ""), 
        ppTitle = xmobarColor "#b2ed00" "" 
       } >> updatePointer (Relative 0.99 0.99), 
      modMask = mod4Mask, 
      borderWidth = 4, 
      normalBorderColor = "#777777", 
      focusedBorderColor = "#ccff00", 
      workspaces = myWorkspaces, 
      focusFollowsMouse = True, 
      terminal = "x-terminal-emulator" 
     } 
     `removeKeys` myRemoveKeys 
     `additionalKeys` myAdditionalKeys