我是Haskell的新手,目前没有时间真正地学习Haskell,因此我向已经弄清楚Haskell的专家寻求帮助。 :)

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

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

这个设置似乎并未在我发现的任何配置中使用,并且每次eI尝试将其转换为其他格式时,都无法正常运行。

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

而且,如何将这种格式转换为更常用的格式。

最佳答案

关于“转换”:

由于xmonad.hs只是已被编译为“您的” xmonad的haskell源代码,因此实际上并没有“格式”,并且有很多方法可以编写相同的内容。

如果您的意思是如何将=<< operatorstatusBar转换为符号:

main = xmonad =<< statusBar myBar myPP statusbarToggleKey myConfig

在这里,您正在使用两个功能:
  • xmonad函数,它接受四个参数并返回main。因此,基本上,使用传递给它的内容IO (XConfig (ModifiedLayout AvoidStruts l)创建相应的XConfig并将其包装在IO monad中返回。
  • 带有一个XConfig并返回IO()的XConfig definition函数

  • = 返回的XConfig并将其传递给statusBar

    等价于do表示法是:
    main = do
        config <- statusBar myBar myPP statusbarToggleKey myConfig
        xmonad config
    

    但是,一旦您了解了Monad操作符的作用,它们看起来就会比符号更优雅。

    使用dzen:

    如果要继续使用xmonad函数,只需更改传递给它的参数即可。
    -- 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):

    您可以在ojit_a中看到statusBar的类型。这是一个使用XConfig并返回映射的函数。

    这是使用keys中的fromList函数编写“漂亮”方法的示例:
    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中定义的键,则可以使用Data.Map:
    myConfig = defaultConfig
        {
         ...
        , keys = myKeys <+> keys defaultConfig
        }
    

    关于haskell - 在这种不寻常的设置中如何使用Dzen而不是Xmobar,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21218309/

    10-13 05:12