使用Xmonad和自定义键来启动一个函数?
问题描述:
我该怎么做?我尝试以下方法,但它给了我一个错误说我的括号不匹配等。我甚至不知道该功能项是正确的使用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)
答
来图定做键启动功能,做到以下几点。 添加到您的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