15

我想

  1. (仅)从覆盖全屏的浮动窗口(如 mplayer)中删除边框,以及
  2. 当工作区中只有一个窗口时,使用不同的边框颜色 (normalBorderColor)。

目前,我正在使用 XMonad.Layout.NoBorders 中的 smartBorders 从 mplayer 中删除边框,并在该窗口是工作区中唯一的窗口时删除该窗口的边框。但是,当我在两个都有一个非浮动窗口(无论模式(高/镜像/全))的两个工作区之间切换时,我会看到窗口(在我正在更改的工作区中)“跳跃”了一下,当它的边框被绘制时,然后在稍后的片刻中移除(如果你将borderWidth设置为一个大数字,效果会更明显)。

下面给出了我的 ~/.xmonad/xmonad.hs 的相关部分。

import XMonad.Hooks.ManageDocks
import XMonad.Layout.NoBorders
myLayout = tiled ||| Mirror tiled ||| Full
  where
    tiled   = Tall 1 (3/100) (3/5)                                 
main = xmonad $ defaultConfig 
                 { layoutHook = avoidStruts $ smartBorders $ myLayout 
                 , borderWidth = 4
                 , normalBorderColor  = "#000000" -- black
                 , focusedBorderColor = "#ff3f3f" -- reddish
                 }

你们知道我是如何达到这个效果的吗?(第 2 部分。甚至可能吗?)非常感谢对实现类似效果的扩展和/或现有配置的建议和指针。

4

2 回答 2

9

我解决了pt。1 使用来自 XMonad.Layout.NoBorders 的名为 OnlyFloat 的歧义构造函数。

import XMonad.Hooks.ManageDocks
import XMonad.Layout.NoBorders
myLayout = tiled ||| Mirror tiled ||| Full
  where
    tiled   = Tall 1 (3/100) (3/5)                                 
main = xmonad $ defaultConfig 
                 { layoutHook = lessBorders OnlyFloat $ avoidStruts $ myLayout 
                 , borderWidth = 4
                 , normalBorderColor  = "#000000" -- black
                 , focusedBorderColor = "#ff3f3f" -- reddish
                 }

我还没有提到pt。2.此外,当我切换到工作区时,聚焦窗口的边框颜色“闪烁”,因为最初,窗口没有聚焦(因此它的边框根据 normalBorderColor 着色),然后窗口变得聚焦(因此它的边框获得颜色focusedBorderColor)。

于 2012-11-22T14:50:12.573 回答
0

关于第 2 部分:xmonad-contrib 包的 0.17.0 版引入了新的XMonad.Layout.VoidBorders布局修改器,它像 XMonad.Layout.NoBorders 一样删除边框,但有点永久(窗口将保留其零宽度边框即使移出 VoidBorders 控制的工作区)。这种副作用可能会或可能不会破坏交易,但它解决了切换工作区时的“跳跃”窗口问题。

于 2022-02-02T23:46:18.130 回答