问题描述
此问题已被多次回答,但我不明白已接受的答案。例如这里How to spawn XMobar instance for each screen?。在问题中,用户指的是另一个问题,其中解决方案隐藏在评论后面。但是该线程中接受的答案仍然隐藏了评论后面的代码。有人能发个解决问题的xmonad.hs,可以编译吗?
我也在这里https://www.reddit.com/r/xmonad/comments/lowbw1/same_xmobar_on_several_screens/问过这个问题,但得到的答案是不可能。但如上所述,似乎有一个解决方案,因为有公认的答案。
解决方法
如果您使用 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 ...
可以正常工作,但是我无法告诉您如何将 Windows 的信息传递给 xmobar。
我找到了这个代码 here,在那里你可以找到一个非常长的 xmonad 配置来记录笔记和想法,还有一些 xmobar 配置。
希望对你有帮助