3

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

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

有没有办法做我想要的开箱即用?如果没有,我该如何扩展dynamicLog?如果这很重要,那么将魔术字符附加到 ppTitle 并在 ppOutput 期间替换它呢?(我想我可以处理追加和替换,但生成替换文本超出了我的 Haskell 能力。)

4

1 回答 1

2

您可以尝试将其添加LoggerppExtras

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)
...
}
于 2014-04-03T20:16:45.857 回答