我是一名Haskell新手,我目前没有时间真正学习Haskell,所以我向那些已经弄明白的专家寻求帮助.:)
这是我目前的xmonad.hs文件:https://github.com/Greduan/dotfiles/blob/dd45d287fade73a3191ad313ec37231a8c802942/xmonad/xmonad.hs
如何添加/配置键绑定(请参阅myKeys变量)以及如何从Xmobar更改为基本(无配置)Dzen设置.
这是一个似乎没有在我发现的任何配置中使用的设置,每次eI尝试将其转换为其他格式时,它都无法正常工作.
另一种格式是main = do etc. etc. etc.BTW.
而且,我怎样才能将这种格式转换为更常用的格式.
关于"转换":
由于xmonad.hs只是编译成"你的"xmonad的haskell源代码,因此没有真正的"格式",并且有很多方法可以编写相同的东西.
如果你的意思是如何main从使用= <<运算符转换为表示法:
main = xmonad =<< statusBar myBar myPP statusbarToggleKey myConfig
Run Code Online (Sandbox Code Playgroud)
在这里您使用两个功能:
在状态栏.函数有四个参数并返回IO (XConfig (ModifiedLayout AvoidStruts l).所以基本上,使用你传递给它的东西statusBar创建相应的XConfig并返回它包装在IO monad中.
的xmonad函数获取的Xconfig和返回IO()
= <<结合两者:将statusBarIO monad中返回的XConfig 传递给它xmonad.
符号中的等价物是:
main = do
config <- statusBar myBar myPP statusbarToggleKey myConfig
xmonad config
Run Code Online (Sandbox Code Playgroud)
但是一旦你理解了monad运算符的作用,它们就会比符号更加优雅.
使用dzen:
如果要继续使用该statusBar函数,只需更改传递给它的参数即可.
-- the command line to launch the status bar
myBar = "dzen2 -y -1" --that's for dzen at the bottom of the screen
-- the PP
myPP = defaultPP
Run Code Online (Sandbox Code Playgroud)
键绑定:
您可以keys在XConfig定义中看到类型.这是一个采用XConfig并返回地图的函数.
下面是一个使用以下fromList函数编写它的"漂亮"方法的示例Data.Map:
import qualified Data.Map as M
myKeys conf@(XConfig {modMask = modm}) = M.fromList $
[
((modm, xK_c), kill),
((modm .|. shiftMask, xK_Return), spawn $ XMonad.terminal conf)
]
Run Code Online (Sandbox Code Playgroud)
然后,如果您想使用defaultConfig中定义的密钥以及您的密钥,您可以使用<+>:
myConfig = defaultConfig
{
...
, keys = myKeys <+> keys defaultConfig
}
Run Code Online (Sandbox Code Playgroud)