1

这个问题被回答了好几次,但我不明白接受的答案。例如这里如何为每个屏幕生成 XMobar 实例?. 在问题中,用户引用了另一个问题,其中解决方案隐藏在评论后面。但是这个线程中接受的答案仍然隐藏了注释后面的代码。有人可以发布解决问题并且可以编译的 xmonad.hs 吗?

我也在这里问了这个问题https://www.reddit.com/r/xmonad/comments/lowbw1/same_xmobar_on_several_screens/但得到的答案是不可能的。但正如上面所写,似乎有一个解决方案,因为有公认的答案。

4

1 回答 1

0

如果您使用 Xmonad 作为窗口管理器,您可以通过这种方式在 xmonad.hs 中生成 xmobar,导入XMonad.Util.Run以运行“spawnPipe”

main = do
     -- Launching three instances of xmobar on their monitors.
     xmproc0 <- spawnPipe "xmobar -x 0 $HOME/.config/xmobar/xmobarrc0"
     xmproc1 <- spawnPipe "xmobar -x 1 $HOME/.config/xmobar/xmobarrc2"
     xmproc2 <- spawnPipe "xmobar -x 2 $HOME/.config/xmobar/xmobarrc1"

如果需要,它可以是相同的 xmobarrc。

有了这个,你可以从 Xmonad 传递参数,比如你的工作空间、布局等,到 xmobar,在你的 def 配置中定义

xmonad $ def {
      keys = myKeys
    , otherHooks...
    , logHook = myLogHook <+> dynamicLogWithPP xmobarPP
                    { ppOutput = \x -> hPutStrLn xmproc0 x  >> hPutStrLn xmproc1 x  >> hPutStrLn xmproc2 x
    , ppFormats
    }
} 

对于 ppFormats 检查XMonad.Hooks.DynamicLog

而且,如果您不使用 Xmonad,可能会在您的启动文件中定义,如 .xinitrc 或您使用的文件添加

exec 'xmobar -x 0 /path/to/config' &
exec 'xmobar -x 1 /path/to/config' &
exec ...

可以正常工作,但这我不能告诉你如何将你的窗口信息传递给 xmobar。

我在这里找到了这段代码,在那里你可以找到一个非常长的 xmonad 配置来记录笔记和想法,还有一些 xmobar 配置。

希望这有帮助

于 2021-02-23T03:52:29.477 回答