仅从全屏浮动窗口中删除边框(XMonad配置)

wil*_*hor 13 haskell window-managers xmonad

我想要

  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
                 }
Run Code Online (Sandbox Code Playgroud)

你们大家都知道我是如何实现这种效果的吗?(是第2部分.甚至是可能的吗?)对扩展和/或现有配置的建议和指示,以实现类似的效果非常感激.

wil*_*hor 9

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

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
                 }
Run Code Online (Sandbox Code Playgroud)

我没有解决过这个问题.2.此外,当我切换到工作区时,聚焦窗口的边框颜色"闪烁",因为最初,窗口没有聚焦(因此其边框按照normalBorderColor着色),此后窗口变得聚焦(因此它的边框得到颜色focusedBorderColor).