我是 Haskell 新手,目前没有时间真正学习 Haskell,所以我正在向已经了解它的专家寻求帮助。 :)
这是我当前的 xmonad.hs 文件:https://github.com/Greduan/dotfiles/blob/dd45d287fade73a3191ad313ec37231a8c802942/xmonad/xmonad.hs
如何添加/配置键绑定(bind)(参见 myKeys
变量)以及如何从 Xmobar 更改为基本(尚无配置)Dzen 设置。
这是一个似乎没有在我发现的任何配置中使用的设置,并且每次我尝试将其转换为其他格式时,它都无法正常工作。
另一种格式是 main = do etc. etc. etc.
顺便提一句。
而且,我怎样才能从这种格式转换为更常用的格式。
最佳答案
关于“转换”:
由于 xmonad.hs 只是编译成“你的”xmonad 的 haskell 源代码,因此没有真正的“格式”,并且有很多方法可以编写相同的东西。
如果您的意思是如何转换 main
从使用 =<< operator做符号:
main = xmonad =<< statusBar myBar myPP statusbarToggleKey myConfig
在这里,您使用了两个功能:
IO (XConfig (ModifiedLayout AvoidStruts l)
的函数.所以基本上,使用你传递给它的东西statusBar
创建相应的 XConfig 并将其返回包装在 IO monad 中。 =<< 结合了两者:接受
statusBar
返回的 XConfig从 IO monad 中取出并将其传递给 xmonad
.do 表示法中的等价物是:
main = do
config <- statusBar myBar myPP statusbarToggleKey myConfig
xmonad config
但是一旦你了解了 monads 运算符的作用,它们就会比 do 表示法看起来更优雅。
使用 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
键绑定(bind):
可以看到
keys
的类型在 XConfig definition .这是一个接受 XConfig 并返回 map 的函数。这是一个“漂亮”的写法示例,使用
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)
]
然后,如果您想使用 defaultConfig 中定义的键以及您自己的键,则可以使用
<+>
:myConfig = defaultConfig
{
...
, keys = myKeys <+> keys defaultConfig
}
关于haskell - 如何在这个不寻常的设置中使用 Dzen 而不是 Xmobar,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21218309/