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

标签 haskell xmonad

我是 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

在这里,您使用了两个功能:
  • statusBar接受四个参数并返回 IO (XConfig (ModifiedLayout AvoidStruts l) 的函数.所以基本上,使用你传递给它的东西statusBar创建相应的 XConfig 并将其返回包装在 IO monad 中。
  • xmonad函数接受 XConfig 并返回 IO()

  • =<< 结合了两者:接受 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/

    相关文章:

    haskell - tryhaskell.org 是否支持定义?

    haskell - 使用不正确的 Data.Map 时出现 XMonad 编译错误

    haskell - xmonad 子图不工作

    haskell - XMonad:如何将Super(Win键)+空格绑定(bind)到键盘布局切换?

    linux - XMobar 隐藏在第一个 XMonad 工作区

    c++ - 在 Haskell 中移动或复制(相对于 C++)

    haskell - 我可以自动实现类吗?

    haskell 。带有 OverloadedStrings 的 TagSoup 库

    haskell - Haskell 中的教会列表操作

    configuration - 如何动态更改 xmobar 配置