繁体   English   中英

xmonad的dynamicLog如何格式化未聚焦窗口的标题?

[英]How can xmonad's dynamicLog format the titles of unfocused windows?

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

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

有什么方法可以开箱即用地做我想做的事吗? 如果没有,如何扩展dynamicLog? 如果这不是很简单的话,那么在ppTitle后面添加魔术字符并在ppOutput期间替换它会怎么样? (我认为我可以处理附加和替换,但是生成替换文本超出了我的haskell能力。)

您可以尝试在ppExtras添加此Logger

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)
...
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM