如何在这个不寻常的设置中使用Dzen而不是Xmobar

gre*_*uan 6 haskell xmonad

我是一名Haskell新手,我目前没有时间真正学习Haskell,所以我向那些已经弄明白的专家寻求帮助.:)

这是我目前的xmonad.hs文件:https://github.com/Greduan/dotfiles/blob/dd45d287fade73a3191ad313ec37231a8c802942/xmonad/xmonad.hs

如何添加/配置键绑定(请参阅myKeys变量)以及如何从Xmobar更改为基本(无配置)Dzen设置.

这是一个似乎没有在我发现的任何配置中使用的设置,每次eI尝试将其转换为其他格式时,它都无法正常工作.

另一种格式是main = do etc. etc. etc.BTW.

而且,我怎样才能这种格式转换为更常用的格式.

Lei*_*iaz 7

关于"转换":

由于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)

键绑定:

您可以keysXConfig定义中看到类型.这是一个采用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)