在多台显示器上使用 Xmobar

问题描述

此问题已被多次回答,但我不明白已接受的答案。例如这里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 配置。

希望对你有帮助

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...