xmobar 卡在更新中

xmobar stuck on Updating

所以我第一次安装了 xmobar,并借助文档和一些 YouTube 视频对它进行了一些修改。当我重新加载 xmonad wm 时,我得到了 xmobar 栏,但它停留在更新中... 我会提供配置文件。提前致谢!

Config
{ --APPERANCE

  --FONTS
  font = "xft=Ubuntu:weight=bold:pixelsize=12:antialias=true:hinting:true",
  --COLORS
  bgColor = "#282c34",
  fgColor = "#ff6c6b",
  --BAR POSITION
  position = Top,
  commands =
  [ --Get kernel version
    Run Com ".local/bin/kernel" [] "kernel" 3600,
    --CPU Usage
    Run Cpu ["-t", "<fn=2>\xf108</fn>  cpu: (<total>%)", "-H", "50", "--high", "red"] 20,
    --RAM Usage
    Run Memory ["-t", "<fn=2>\xf233</fn>  mem: <used>M (<usedratio>%)"] 20,
    --Free Disk Space
    Run DiskU [("/", "<fn=2>\xf0c7</fn>  hdd: <free> free")] [] 60,
    --Uptime
    Run Uptime ["-t", "uptime: <days>d <hours>h"] 360,
    --Battery
    Run BatteryP ["BAT0"] ["-t", "<acstatus><watts> (<left>%)"] 360,
    --Date & Time
    Run Date "<fn=2>\xf017</fn>  %b %d %Y - (%H:%M) " "date" 50,
    --Weather
    Run Weather "RJTT" ["--template", "<skyCondition> | <fc=#4682B4><tempC></fc>°C | <fc=#4682B4><rh></fc>% | <fc=#4682B4><pressure></fc>hPa"] 36000,
    --Network Activity Monitor
    Run DynNetwork
          [ "--template",
            "<dev>: <tx>kB/s|<rx>kB/s",
            "--Low",
            "1000", -- units: B/s
            "--High",
            "5000", -- units: B/s
            "--low",
            "darkgreen",
            "--normal",
            "darkorange",
            "--high",
            "darkred"
          ]
          10,
          -- Script that dynamically adjusts xmobar padding depending on number of trayer icons
          Run Com ".config/xmobar/trayer-padding-icon.sh" [] "trayerpad" 20
    ]
}

您没有在配置中指定顶级 template。缺失时,它defaults"%StdinReader% }{ <fc=#00FF00>%uname%</fc> * <fc=#FF0000>%theDate%</fc>"。这三项中哪一项仍然是 Updating...

如果它是 StdinReader(这是最有可能的)并且假设您希望显示 XMonad 记录的数据(即不仅仅是您定义的“外部”项目),请检查您的 XMonad 的输出是否实例已正确通过管道传输到 xmobar。这可以在您的 .xsession(或类似)文件中设置,或者在 XMonad 中使用 spawnPipehPutStrLn(来自 xmonad-contribXMonad.Util.Run 模块)包)。

对于后者,您通常还会导入 XMonad.Hooks.DynamicLog(也来自 xmonad-contrib 包)并且对于您的 logHook 重新定义您喜欢的漂亮的 ppOutput 字段-printer(大概 xmobarPP)将其输出定向到 xmobar 的一个实例。你的 xmonad.hs 看起来像这样:

import XMonad.Util.Run -- for spawnPipe and hPutStrLn
import XMonad.Hooks.DynamicLog -- for dynamicLogWithPP, pp*, xmobar*
...
main = do
  ...
  barpipe <- spawnPipe "xmobar -with -your -preferred -options"
  ...
  xmonad $ def {
    ...
    logHook = dynamicLogWithPP $ xmobarPP {
      ...
      ppOutput = hPutStrLn barpipe
      ...
    }
    ...
  }

关于您的 xmobar 配置的其余部分:

  • 考虑添加您自己的顶级 template,否则您将无法使用(即显示)您在其中定义的任何项目
  • 将字体定义中的第二个=替换为:得到font = "xft:Ubuntu...