Resolución de pantalla: nueva resolución con xrandr

Publicado por Diego Córdoba en

¿Te ha pasado que en tu sistema GNU/Linux no puedes configurar la máxima resolución que acepta tu monitor? O agregas una pantalla nueva y su resolución soportada no aparece en la lista desplegable? En este artículo te enseño a agregar esta resolución faltante usando xrandr.

Este artículo intenta responder algunas dudas de un alumno del curso de Administración GNU/Linux para certificar LPIC-1, como siempre, quedan invitados a visitar nuestro sitio de cursos con todos los descuentos vigentes!

Cambiando la resolución de pantalla

Cambiar la resolución de la pantalla no es nada complicado de hacer mediante la interfaz gráfica del gestor de pantalla, no obstante, vamos primero a aprender a cambiar la resolución o rotación de pantalla por línea de comandos utilizando la herramienta xrandr.

El nombre xrandr viene de «X window system Resize and Rotate extension».

Podemos listar los monitores activos mediante:

xrandr --listactivemonitors
resolucion de pantalla xrandr listactivemonitors

Aquí se ve que en mi computadora tengo un solo monitor llamado VGA-0.

Por su parte, podemos listar todas las resoluciones disponibles para cada uno usando el comando xrandr sin argumentos:

resolucion de pantalla xrandr

En esta salida podemos ver todas las resoluciones disponibles en mi monitor para VGA-0.

La primer columna corresponde con el modo de trabajo del monitor, o su resolución.

Para cambiar la resolución del monitor por una de la lista, podemos hacer:

xrandr --output MONITOR --mode MODO

Por ejemplo, si quiero configurar una resolución de 1024×768 en VGA-0, puedo ejecutar:

xrandr --output VGA-0 --mode 1024x768

Si necesitamos también agregar el rate de refresco de la pantalla, podemos agregar «--rate 75» si deseamos configurarloa 75 ciclos.

Por otro lado, si tenemos dos pantallas (no es mi caso) podemos agregar varias opciones que configuran una en forma relativa a la otra. Por ejemplo, podemos usar --left-of, --right-of, --above, --below, y --same-as, siempre acompañando a estas opciones con el nombre de nuestra otra pantalla. Para más información sobre qué hacen estas opciones: man xrandr.

Hay que considerar que cambiar la resolución de esta forma no lo hace persistente, al reiniciar el sistema volveremos a tener la resolución original. Para lograr que se mantenga luego del reinicio sería conveniente agregar las configuraciones al archivo xorg.conf, o agregar los comandos necesarios al ~/.xprofile o ~/.xinitrc (soluciones no tan elegantes como la primera, claro).

Agregando una nueva resolución

Si al cambiar la resolución, ya sea mediante la interfaz gráfica o utilizando xrandr para seleccionar una resolución de la lista, vemos que la resolución que queremos no está presente, podemos agregarla (siempre y cuando nuestro monitor la soporte.

Supongamos que la resolución «1680×1050» no está presente en nuestra configuración (ni xrandr ni por interfaz gráfica) y deseamos agregarla porque nuestro monitor sí la soporta.

Primero debemos calcular el «modo» correspondiente a la resolución dada. Para ello vamos a ejecutar el comando:

cvt 1680 1050

Tendremos una salida como esta:

cvt

Ahora debemos copiar el contenido del modeline: «1680x1050_60.00» 146.25 1680 1784 1960 2240 1050 1053 1059 1089 -hsync +vsync, y agregarlo con xrandr de esta forma:

xrandr --newmode "1680x1050_60.00"  146.25  1680 1784 1960 2240  1050 1053 1059 1089 -hsync +vsync

Con eso tendremos un nuevo modo de pantalla cargado en el sistema. Ahora debemos asociarlo con nuestro monitor, en mi caso, VGA-0, de esta forma:

xrandr --addmode VGA-0 "1680x1050_60.00"

Ahora, tanto al listar los modos disponibles con xrandr sin argumentos, como al verlos en el desplegable de resoluciones de la configuración de pantalla en el escritorio, veremos la nueva resolución para poder utilizar.

Dando persistencia

De nuevo, esto solamente va a ser válido mientras no reiniciemos el sistema.

Para hacerlo persistente una forma es agregar estos comandos:

xrandr --newmode "1680x1050_60.00"  146.25  1680 1784 1960 2240  1050 1053 1059 1089 -hsync +vsync
xrandr --addmode VGA-0 "1680x1050_60.00"

En el archivo ~/.profile o ~/.xinitrc de cada usuario de modo que el usuario cuando inicie cargue la nueva configuración.

Otra forma de hacerlo para todos los usuarios es crear un script que se ejecute al inicio. Podemos crear un script llamado nueva_resolucion.sh en el directorio /etc/profile.d/ que incorpore las líneas que agregan el modo y lo asocian con nuestro monitor.

En mi caso, edito el archivo:

sudo vim /etc/profile.d/nueva_resolucion.sh

Y agrego las líneas necesarias:

xrandr --newmode "1680x1050_60.00"  146.25  1680 1784 1960 2240  1050 1053 1059 1089 -hsync +vsync
xrandr --addmode VGA-0 "1680x1050_60.00"

Solo nos queda darle permisos de ejecución al script:

sudo chmod +x /etc/profile.d/nueva_resolucion.sh

Y al reiniciar el sistema deberíamos tener la nueva resolución cargada.

Espero que este post sea de utilidad! Y por supueso, ayude a salvar las dudas 🙂

Cualquier consulta quedo a disposición en la sección de comentarios!

Fuentes:

Categorías: Sin categoría

Diego Córdoba

- Ingeniero en Informática - Mg. Teleinformática - Tesis pendiente - Docente universitario - Investigador