如何配置 StdinReader 只显示工作区?
How to configure StdinReader to only show workspaces?
我有一个非常简单的 xmonad/xmobar 配置,在 xmobar 的左侧:
[1] 2 : Tall : How to configure StdinReader to only ...
如何删除布局名称和 window 标题? (Tall
和 How 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>"
}
您在 xmobarrc2
(天气、网络、Cpu、内存、交换、Com、StdinReader 和日期)中定义了很多命令,但您在 template
是 StdinReader 和 Date(如果你愿意,你可以删除其他的)。现在,虽然 Date 按照上面的定义工作(并被格式化),但 StdinReader 只是重现 XMonad 的 (pre-formatted) 输出。因此,改变你想要改变的地方是在你的 xmonad.hs
.
XMonad 使用 logHooks 来报告内部状态更新,例如 window 标题、焦点更改等。这样的 logHook 通常用于将这些信息通过管道传输到状态栏中。 XMonad.Hooks.StatusBarPP实现了一个logHook,定义了一个pretty-printer(PP)来格式化要输出的内容。该模块还定义了 xmobarPP
,它另外实现了一些特定的功能,例如以 XMobar 期望的方式设置颜色(<fc=#FFF>…</fc>
)等。因此,对于 XMobar,您通常使用 [=16 安装 logHook =].
这些 pretty-printer 允许用户使用特定函数自定义格式。其中之一是
ppOrder :: [String] -> [String]
默认情况下使用字符串列表(按此顺序)调用工作区、布局、当前 window 标题以及您使用另一个名为 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]
-- ...
}
-- ...
}
-- ...
我有一个非常简单的 xmonad/xmobar 配置,在 xmobar 的左侧:
[1] 2 : Tall : How to configure StdinReader to only ...
如何删除布局名称和 window 标题? (Tall
和 How 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>"
}
您在 xmobarrc2
(天气、网络、Cpu、内存、交换、Com、StdinReader 和日期)中定义了很多命令,但您在 template
是 StdinReader 和 Date(如果你愿意,你可以删除其他的)。现在,虽然 Date 按照上面的定义工作(并被格式化),但 StdinReader 只是重现 XMonad 的 (pre-formatted) 输出。因此,改变你想要改变的地方是在你的 xmonad.hs
.
XMonad 使用 logHooks 来报告内部状态更新,例如 window 标题、焦点更改等。这样的 logHook 通常用于将这些信息通过管道传输到状态栏中。 XMonad.Hooks.StatusBarPP实现了一个logHook,定义了一个pretty-printer(PP)来格式化要输出的内容。该模块还定义了 xmobarPP
,它另外实现了一些特定的功能,例如以 XMobar 期望的方式设置颜色(<fc=#FFF>…</fc>
)等。因此,对于 XMobar,您通常使用 [=16 安装 logHook =].
这些 pretty-printer 允许用户使用特定函数自定义格式。其中之一是
ppOrder :: [String] -> [String]
默认情况下使用字符串列表(按此顺序)调用工作区、布局、当前 window 标题以及您使用另一个名为 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]
-- ...
}
-- ...
}
-- ...