0

我有一个非常简单的 xmonad/xmobar 配置,它在 xmobar 的左侧:

[1] 2 : Tall : How to configure StdinReader to only ...

如何删除布局名称和窗口标题?(TallHow to ...)??

我可以看到如下所示的模板xmobarrc2

template = "%StdinReader%}{<fc=#FFF>%date%</fc>"

所以看起来StdinReader提供了所有这 3 个项目,但我该如何配置呢?我似乎找不到任何有用的东西,除了可能UnsafeStdinReader,但我真的不明白它是如何工作的,或者我应该如何去研究这个..

谁能指出我正确的方向?

我的整个xmobarrc2

    Config { font = "xft:Ubuntu Mono:pixelsize=16:antialias=true:hinting=true"
            , borderColor = "black"
            , border = TopB
            , bgColor = "black"
            , fgColor = "grey"
            , position = TopP 0 0
            , commands = [ 
                      Run Weather "CYVR" ["-t","<tempC>C","-L","18","-H","25","--normal","green","--high","red","--low","lightblue"] 36000
                    , Run Network "eth0" ["-L","0","-H","32","--normal","green","--high","red"] 10
                    , Run Network "eth1" ["-L","0","-H","32","--normal","green","--high","red"] 10
                    , Run Cpu ["-L","3","-H","50","--normal","green","--high","red"] 10
                    , Run Memory ["-t","Mem: <usedratio>%"] 10
                    , Run Swap [] 10
                    , Run Com "uname" ["-s","-r"] "" 36000
                    , Run Date "%a %_d.%_m  %H:%M" "date" 10
                    , Run StdinReader
                            ]
            , sepChar = "%"
            , alignSep = "}{"
            , template = "%StdinReader%}{<fc=#FFF>%date%</fc>"
            }
4

1 回答 1

1

您在xmobarrc2(天气、网络、Cpu、内存、交换、Com、StdinReader 和 Date)中定义了很多命令,但您实际使用的唯一template命令是 StdinReader 和 Date(如果您愿意,可以删除其他命令) . 现在,虽然 Date 按上述定义工作(并且已格式化),但 StdinReader 只是再现了 XMonad 的(预格式化)输出。因此,更改您想要更改的内容的位置在您的xmonad.hs.

XMonad 使用 logHooks 报告内部状态更新,例如窗口标题、焦点更改等。这样的 logHook 通常用于将这些信息通过管道传输到状态栏。XMonad.Hooks.StatusBarPP实现了一个 logHook,它定义了一个漂亮的打印机 (PP) 来格式化要输出的内容。该模块还定义了xmobarPP哪些附加实现了一些特定功能,例如以 XMobar 期望的方式设置颜色 ( <fc=#FFF>…&lt;/fc>) 等。因此,使用 XMobar,您通常使用xmobarPP.

这些漂亮的打印机允许用户使用特定功能自定义格式。其中之一是

ppOrder :: [String] -> [String]

默认情况下,使用字符串列表(按此顺序)调用工作区、布局、当前窗口标题以及您使用另一个名为ppExtras. 要仅拥有工作区,请将其重新定义为:

ppOrder = \(ws:_) -> [ws]

总而言之,您xmonad.hs将需要以下内容:

main = do
  -- ...
  xmproc2 <- spawnPipe "xmobar path/to/your/xmobarrc2"
  -- ...
  xmonad $ ewmh desktopConfig
    { 
      -- ...
      , logHook = dynamicLogWithPP xmobarPP
          { 
            -- ...
            , ppOutput = hPutStrLn xmproc2
            , ppExtras = []
            , ppOrder = \(ws:_) -> [ws]
            -- ...
          }
      -- ...
    }
  -- ...
于 2021-12-27T12:14:16.273 回答