如果您使用 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 配置。
希望这有帮助