Screen tearing en Linux

La solución definitiva

Roberto Lodeiro

Muchos de los que usamos Linux hemos sufrido tearing, y al fin he encontrado la solución. Tanto si usas una gráfica Nvidia, como una integrada de Intel, podrás decir adiós a este molesto problema.

Anteriormente escribí dos posts sobre como instalar Debian y como personalizar XFCE (el mejor entorno de escritorio que he probado hasta la fecha), así que basaré este en máquinas con esta configuración, aunque seguramente te sea de utilidad si utilizas otra distribución u otro entorno de escritorio.


1. Cambiar el compositor

Primero, vamos a cambiar el compositor por defecto de XFCE, lo que viene siendo el gestor de ventanas del sistema. He elegido Compton por ser ligero y altamente personalizable.

  • Deshabilitamos el compositor por defecto de XFCE en Settings Manager/Window Manager Twearks/Compositor

  • Instalamos Compton

    $ sudo apt-get install compton compton-conf 
    
    • Habilitamos su inicio automático
    $ sudo nano ~/.config/autostart/compton.desktop
    

    Pegamos dentro lo siguiente y guardamos:

    [Desktop Entry]
    Encoding=UTF-8
    Version=0.9.4
    Type=Application
    Name=Compton
    Comment=X11 compositor
    Exec=compton -b
    OnlyShowIn=XFCE;
    StartupNotify=false
    Terminal=false
    Hidden=false
    
    • Cambiamos los permisos al fichero creado
    $sudo chmod +x ~/.config/autostart/compton.desktop
    
  • Creamos configuración por defecto ejecutando compton-conf y pulsamos en apply

$ compton-conf

1.1 Transparencia en ventanas inactivas

Por defecto, Compton muestra las ventanas inactivas con transparencia. Si no te gusta este comportamiento puedes modificarlo en la configuración generada anteriormente.

  • Edita el archivo compton.conf

    $ sudo nano ~/.config/compton.conf
    
    • Busca inactive-opacity y lo modifícalo para que no aplique la transparencia, quedando algo así:
    ...
    inactive-opacity = 1.0;
    ...
    

Al reiniciar o cerrar y abrir la sesión Compton sera nuestro compositor por defecto.


2. Nvidia

Ahora vamos a configurar nuestra tarjeta de vídeo Nvidia. Si tienes una Intel salta al punto 3.

2.1 Instalar drivers

Vamos a instalar los drivers privativos. Si ya los tienes, salta al punto 2.2.

Hemos de tener habilitados los repositorios contrib, non-free y backports, he explicado como hacerlo en este post sobre Debian.

  • Comprobamos el driver en uso con lshw
$ sudo apt install lshw
$ sudo lshw -c display
  • Ponemos los controladores noveau en lista negra:

    sudo nano /etc/modprobe.d/blacklist-nouveau.conf
    

    Pegamos dentro lo siguiente y guardamos:

    blacklist nouveau
    blacklist lbm-nouveau
    options nouveau modeset=0
    alias nouveau off
    alias lbm-nouveau off
    
  • Instalamos el driver privativo:

$ sudo apt install -t stretch-backports nvidia-driver
  • Creamos el fichero de configuración en /etc/X11/xorg.conf
$ sudo nvidia-xconfig

2.2 Configuracion

Tiendo los drivers de Nvidia y Compton correctamente instalados:

  • Abrimos nvidia-settings con sudo
sudo nvidia-settings
  • Vamos a X ServerDisplay Configuration y pinchamos en Advanced.

    • Marcamos la opcion Force Composition Pipeline

    • Pinchamos en Save to X Configuration File y guardamos, se añadirá a la configuración previa en /etc/X11/xorg.conf

Has de reiniciar para que se apliquen los cambios.


3. Intel

Si tu tarjeta de vídeo es Intel, como es el caso de mi portátil XPS, la solución es muy sencilla.

Teniendo el compositor Compton instalado:

  • Creamos el archivo /etc/X11/xorg.conf

    $ sudo nano /etc/X11/xorg.conf
    

    Pegamos dentro lo siguiente y guardamos:

    Section "Device"
    Identifier  "Intel Graphics"
    Driver      "intel"
    EndSection
    

Una vez reinicies el sistema, el tearing habrá desaparecido.


Espero que sea útil, ¡gracias por leerme!