Blog

Okt302015

Compton ... heimlich, still und leise ist da dieser Compositing Manager

Still und heimlich existiert neben Compiz und seinen Forks auch der kleine Compositing Manager namens "Compton". Ohne auch nur ansatzweise von Google vorgeschlagen zu werden, wenn es um "debian jessie compiz" geht, existiert das Paket bereits fix und fertig in den offiziellen Repos von Debian Jessie.
Im Gegensatz zu einer früheren Fassung dieses Blog-Eintrags, bei der ich die Überschrift "... Compositing Fenster Manager" verwendet habe, enthält Compton keine Window-Manager. D.h., im Falle von MATE darf der Window-Manager "Marco" nicht durch Compton ersetzt werden.
Vielmehr läuft Compton als Hintergrunddienst.
Neben dem Effekt, dass sämtliche Ausgaben auf dem Bildschirm nun "Tear Free" funktionieren, löst es auch diverse Probleme, die ich mit dem Compsiting von Marco hatte:

  • häufige, rekonstruierbare Abstürze beim Minimieren von Fenstern (manchmal auch beim Öffnen)
  • keine Möglichkeit der Konfiguration (abgesehen vom sparsamen Alt+Tab)

Compton ist zwar kein vollwertiger Ersatz für Compiz, da es keinen Mehrwert für Organisation des Desktop bring (z.B. Fenster- und Desktop-Übersicht), jedoch verhindert es sämtliches unangenehmene Tearing (auf dem Atari verwenden wir gegen Tearing entweder Schattenregister im Zusammenspiel mit einem VSYNC oder das Register WSYNC bei DLIs).

Kurz noch erklärt, wie ich Compton bei mir eingerichtet habe:

  • Compton installieren mit su -c "apt-get install compton"
  • Compton zum Autostart hinzufügen mit nano .config/autostart/compton.desktop und dort folgendes eingetragen:
    [Desktop Entry]
    Type=Application
    Exec=compton -b
    Hidden=false
    Name[de_DE]=Compton
    Name=Compton
    Comment[de_DE]=
    Comment=
  • eine Konfigurationsdatei erstellen mit nano .compton.conf
    in meiner Konfiguration steht folgendes:
    # Shadow
    shadow = true;
    no-dnd-shadow = true;
    no-dock-shadow = true;
    clear-shadow = true;
    shadow-radius = 24;
    shadow-offset-x = -36;
    shadow-offset-y = -12;
    shadow-opacity = 0.6;
    # shadow-red = 0.0;
    # shadow-green = 0.0;
    # shadow-blue = 0.0;
    shadow-exclude = [ "name='docky'", "name = 'Notification'", "g:e:Synapse", "n:w:Geany", "n:w:VLC*", "n:w:compton", "class_g = 'Conky'", "n:w:*Iceweasel*", "n:w:*Chromium*", "class_g ?= 'Cairo-dock'", "class_g ?= 'Notify-osd'" ];
    # shadow-exclude = "n:e:Notification";
    shadow-ignore-shaped = false;

    # Opacity
    menu-opacity = 0.95;
    inactive-opacity = 1;
    active-opacity = 1;
    frame-opacity = 0.87;
    inactive-opacity-override = false;
    alpha-step = 0.6;
    # inactive-dim = 0.2;
    # inactive-dim-fixed = true;
    # blur-kern = "5x5box";
    blur-kern = "15, 15, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, ";
    blur-background = true;
    blur-background-frame = true;
    blur-background-fixed = true;
    blur-background-exclude = [
       "window_type = 'dock'",
       "window_type = 'desktop'",
       "n:w:Firestorm*"
    ];
    # blur-background-exclude = [ "name='Firestorm*'" ];

    # Fading
    fading = true;
    fade-delta = 2;
    fade-in-step = 1.00;
    fade-out-step = 0.06;
    no-fading-openclose = false;
    fade-exclude = [ ];

    # Other
    backend = "glx";
    mark-wmwin-focused = true;
    mark-ovredir-focused = true;
    use-ewmh-active-win = false;
    detect-rounded-corners = true;
    detect-client-opacity = true;
    refresh-rate = 0;
    vsync = "opengl-swc";
    dbe = false;
    paint-on-overlay = true;
    sw-opti = false;
    unredir-if-possible = true;
    focus-exclude = [ ];
    detect-transient = true;
    detect-client-leader = true;
    invert-color-include = [ ];

    # GLX backend
    glx-no-stencil = true;
    glx-copy-from-front = false;
    glx-swap-method = "undefined";

Um Compton nun zu aktivieren, melde ich mich einmal ab und wieder an.
Aus der laufenden Session heraus kann Compton auch ohne Neuanmeldung mit folgendem Befehl gestartet werden: compton -d.

Nachtrag:
Bleibt nur noch zu erwähnen, dass Compton in dieser Konfiguration nicht auf Intel-Grafikkarten der GMA-Reihe funktioniert. In zwei Sachen beißen sich Compton und die Intel-GMA-GPU:

  1. GLX wird nicht unterstützt - jedenfalls nicht auf die Weise, wie Compton es verwenden will (Compton verweigert schlichtweg seine Arbeit).
  2. Schaltet man GLX ab (backend = "xrender";), so hält sich die CPU zu lange an dem Blur-Effekt auf, der in meiner Konfig verwendet wird. Der Bildaufbau verlangsamt sich extrem, so dass kein Arbeiten möglich ist.
Tags: