2012-11-21 10 views
13

I würdeentfernen Grenze von Vollbild floating nur Windows (XMonad Konfiguration)

    mögen
  1. entfernen Grenzen (nur) von Floating-Fenster den gesamten Bildschirm bedeckt (wie MPlayers) und
  2. eine andere Grenzfarbe verwenden (normalBorderColor), wenn nur ein Fenster in einem Arbeitsbereich vorhanden ist.

Derzeit verwende ich smartBorders von XMonad.Layout.NoBorders die Grenze von MPlayer zu entfernen, und die Grenze eines Fensters zu entfernen, wenn das Fenster das einzige Fenster in einem Arbeitsbereich ist. Wenn ich jedoch zwischen zwei Arbeitsbereichen umschalte, die beide ein einzelnes nicht-schwebendes Fenster haben (unabhängig vom Modus (groß/gespiegelt/voll)), dann sehe ich das Fenster (in dem Arbeitsbereich, in den ich verändere) ein wenig "springen", Der Rahmen wird gezeichnet und kurz danach entfernt (der Effekt ist besser sichtbar, wenn Sie die borderWidth auf eine große Zahl setzen).

Der relevante Teil meiner ~/.xmonad/xmonad.hs ist unten angegeben.

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 
       } 

Wissen Sie, wie ich diesen Effekt erreiche? (Ist Teil 2. sogar möglich?) Vorschläge und Hinweise auf Erweiterungen und/oder bestehende Konfigurationen, die einen ähnlichen Effekt erzielen, werden sehr geschätzt.

Antwort

8

Ich löste pt. 1 mit dem Ambiguity-Konstruktor namens OnlyFloat von 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 
       } 

Ich habe nicht pt adressiert. 2. Wenn ich in einen Arbeitsbereich wechsle, "flackert" außerdem die Rahmenfarbe des fokussierten Fensters, da das Fenster anfänglich nicht fokussiert ist (also seine Umrandung wie in normalBorderColor gefärbt ist), wonach das Fenster fokussiert wird (und somit auch) Sein Rand erhält die Farbe focusedBorderColor).