Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Haskell xmonad';s dynamicClog格式化未聚焦窗口的标题?_Haskell_Xmonad - Fatal编程技术网

Haskell xmonad';s dynamicClog格式化未聚焦窗口的标题?

Haskell xmonad';s dynamicClog格式化未聚焦窗口的标题?,haskell,xmonad,Haskell,Xmonad,我试图解决的问题是,我有一个坏习惯,将工作区设置为完全布局,然后忘记打开其他窗口 我想使用的解决方案是继续通过ppTitle将主窗口的标题显示为黑底白,但同时也将我的其他窗口显示为灰色(可能会稍微修剪一下,但这不是重点)。我希望PPTitleInfocused之类的东西,但据我所知,ppTitle是唯一的标题格式选项 有没有一种方法可以从盒子里做我想做的事?如果没有,如何扩展DynamicClog?如果这不是小事,那么在ppTitle中添加一个魔术字符并在ppOutput期间替换它怎么样?(我想

我试图解决的问题是,我有一个坏习惯,将工作区设置为完全布局,然后忘记打开其他窗口

我想使用的解决方案是继续通过ppTitle将主窗口的标题显示为黑底白,但同时也将我的其他窗口显示为灰色(可能会稍微修剪一下,但这不是重点)。我希望PPTitleInfocused之类的东西,但据我所知,ppTitle是唯一的标题格式选项


有没有一种方法可以从盒子里做我想做的事?如果没有,如何扩展DynamicClog?如果这不是小事,那么在ppTitle中添加一个魔术字符并在ppOutput期间替换它怎么样?(我想我可以处理追加和替换,但生成替换文本超出了haskell的能力。)

您可以尝试在
ppExtras
中添加此
记录器

import qualified XMonad.StackSet as W
import XMonad.Util.NamedWindows ( getName )
import Data.Traversable ( traverse )
import Data.Maybe ( maybeToList )
import Data.List ( (\\) )

logTitles :: X (Maybe String) -- this is a Logger
logTitles = withWindowSet $ fmap (Just . unwords) -- fuse window names
                          . traverse (fmap show . getName) -- show window names
                          . (\ws -> W.index ws \\ maybeToList (W.peek ws))
                          -- all windows except the focused (may be slow)
您可以将其添加到
PP
中,如下所示:

{
...
ppExtras = [logTitels]
ppOrder  = \(ws:l:t:ts:_) -> ws : l : t : [xmobarColor "gray" "" ts]
-- Use dzenColor if you use dzen and not xmobar
-- ts is the string of the unfocused window titles (seperated by spaces)
...
}

谢谢你的快速回复!我不确定尾部是否如预期的那样工作。看起来窗口列表的顺序是固定的,tail正在截断其中的第一个窗口,可能是我选择的窗口,也可能不是我选择的窗口。tail完成了预期的操作,删除了主窗口名,但我将其与所选窗口混淆了。我会更新答案。再次感谢!我做了一些小改动(见原文),现在它开始工作了。