2012-11-21 27 views
13

ChciałbymWyjmij obramowanie z fullscreen pływającej tylko okna (konfiguracja xmonad)

  1. usuwają granice (tylko) z pływających oknach obejmujących pełny ekran (jak MPlayer) i
  2. użyć innego koloru obramowania (normalBorderColor), gdy w obszarze roboczym jest tylko jedno okno.

Obecnie używam smartBorders z XMonad.Layout.NoBorders do usuwania obramowania z mplayera oraz do usuwania obramowania okna, gdy to okno jest jedynym oknem w obszarze roboczym. Jednak gdy przełączam się między dwoma obszarami roboczymi, które mają jedno nieruchome okno (niezależnie od trybu (wysoki/lustrzany/pełny)), widzę okno "(w obszarze roboczym, w którym się zmieniam)" przeskakuję ", gdy jego obramowanie zostanie narysowane, a następnie usunięte na krótko po tym czasie (efekt jest bardziej widoczny, jeśli ustawisz borderWidth na dużą liczbę).

Odpowiednia część mojego ~/.xmonad/xmonad.hs jest podana poniżej.

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 
       } 

Czy ludzie wiedzą, w jaki sposób osiągam ten efekt? (czy część 2. jest możliwa?) Sugestie i wskaźniki do rozszerzeń i/lub istniejących konfiguracji, które osiągają podobny efekt, są bardzo doceniane.

Odpowiedz

8

I rozwiązany pt. 1 przy użyciu konstruktora wieloznaczności o nazwie OnlyFloat z XMonad.Layout.NoBorders.

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 
       } 

Nie odniosłem się do pkt. 2. Ponadto, gdy przełączam się w obszar roboczy, kolor obramowania okna skupionego "migocze", ponieważ początkowo okno nie jest skupione (a zatem jego obramowanie jest zabarwione zgodnie z normalBorderColor), po czym okno staje się skupione (a przez to jego obramowanie otrzymuje skoncentrowany na kolorze kolor BorderColor).