Cómo conseguir que la resolución de monitor externo establecida por xrandr persista

11

tl; dr

Mi computadora portátil sigue olvidando la resolución correcta del monitor externo conectado a ella. ¿Cómo puedo hacer que la configuración se "pegue"?

Detalles

Tengo una computadora portátil con Linux Mint conectada a un monitor externo ViewSonic. Lo configuré para usar el monitor externo como una segunda pantalla (es decir, no reflejada). Esto funcionó bien durante algunas semanas.

De repente, la computadora portátil ya no lo reconoció como un ViewSonic, en ese momento no conocía su resolución óptima ( 1600 x 1200), solo permitía un máximo de 1028 x 768. 1 Esto no funcionó bien con mi computadora portátil, que tiene 1920 x 1200resolución.

Después de mucha frustración, encontré esta respuesta . Me ayudó a solucionar el problema de la siguiente manera (la salida del cvtcomando es la línea de modelo que se utilizó en el siguiente comando):

cvt 1600 1200
xrandr --newmode "1600x1200_60.00"  161.00  1600 1712 1880 2160  1200 1203 1207 1245 -hsync +vsync
xrandr --addmode VGA-1 1600x1200_60.00

Esto es exactamente lo que había deseado poder hacer, pero no podría hacer a través de la GUI. (Hay razones por las que todavía amo la línea de comandos ...)

Esto una vez más funcionó bien por un tiempo. Sin embargo, cuando encendí la computadora hoy e inicié sesión, recibí una ventana emergente de área de notificación con una serie de errores sobre los diferentes modos intentados que no funcionaban, y el monitor externo estaba apagado. Repetí los comandos anteriores, y está funcionando nuevamente.

Tengo una tarjeta nVidia. Intenté instalar el controlador propietario cuando las cosas comenzaron a salir mal, pero en ese momento el monitor externo ya no se reconoció en absoluto, así que volví al controlador de código abierto. No tengo un Xorg.confo un Xorg.conf.d, solo un xorg.conf.failsafe.

No quiero repetir estos comandos cada vez que arranque la máquina. ¿Hay alguna manera de que esto se guarde en mi Xorg.confo algo así? Han pasado varios años desde que hice mucho con X. ¿Alguien puede ayudarme aquí?


1 No he podido determinar por qué sucedió esto. Mi mejor suposición es una actualización problemática del controlador.

Kazark
fuente
1
¿Qué tarjeta gráfica está usando? Y si se trata de ATI / AMD o Nvidia, ¿está utilizando el controlador propietario o el de código abierto? ¿Tiene actualmente un /etc/X11/corg.confarchivo o algo en /etc/X11/corg.conf.d? Id así, edite su pregunta y agregue el contenido de esos archivos.
terdon
Por favor, editar su pregunta para añadir información adicional, que es difícil de leer y es fácil perderse en los comentarios. Dicho esto, sí, el xorg.conf ya no es necesario, estas cosas ahora son manejadas por udev.
terdon
Solo mirando su pregunta nuevamente y lo que me perdí cuando escribí mi respuesta es que tiene una computadora portátil. Lo que quizás desee considerar es escribir una udevregla para llamar a un script para hacer xrandr cada vez que el monitor está enchufado o desconectado, esto será mucho mejor si su computadora no siempre está conectada al monitor. De lo contrario, si está contento de tenerlo instalado en el mismo lugar todo el tiempo, ese Xorg.confes el camino a seguir.
Graeme

Respuestas:

5

Estoy seguro de que hay una mejor manera, creo que todo esto ya está manejado, udevpero si sabes que esos comandos lo resolverán, siempre puedes convertirlos en un script:

#!/usr/bin/env bash
cvt 1600 1200
xrandr --newmode "1600x1200_60.00"  161.00  1600 1712 1880 2160  1200 1203 1207 1245 -hsync +vsync
xrandr --addmode VGA-1 1600x1200_60.00

Haga que sea ejecutable y luego agréguelo a las aplicaciones de inicio de su entorno de escritorio. Esta es probablemente la mejor opción si su DE le brinda la opción.


Si no puede hacer lo anterior, como un truco sucio, puede agregarlos a su ~/.profile:

if [ ! -t 0 ] 
then
    cvt 1600 1200
    xrandr --newmode "1600x1200_60.00"  161.00  1600 1712 1880 2160  1200 1203 1207 1245 -hsync +vsync
    xrandr --addmode VGA-1 1600x1200_60.00
fi

El if [ ! -t 0 ]debe asegurarse de que esto sólo se ejecuta en el GUI y .profilese obtiene mediante gestor de inicio de la menta por lo que recuerdo.

Ahora, usted debe también ser capaz de utilizar ~/.xsessionpero he tenido problemas con eso de ser ignorado. Muchos de los enfoques más antiguos están siendo reemplazados y no estoy seguro de cuál es el estado del arte.

terdon
fuente
No tiene que usar cvt 1600 1200 ya que ya usamos su salida en las siguientes dos líneas.
PraveenMax
4

Si está utilizando el controlador propietario de Nvidia, entonces nvdia-settingsdebería ser la herramienta GUI para configurar el Xorg.confarchivo. Debería tener su propio paquete en Linux Mint, por lo que la instalación sería tan simple como:

sudo apt-get install nvidia-settings

Esto debería poner un ícono en su menú en algún lugar, puede ejecutarlo desde allí (aunque no estoy seguro de cómo lograr que tenga permisos de root). Desde la línea de comando, creo que puedes hacer:

sudo /usr/lib/nvidia/current/nvidia-settings

Si desea hacer la línea de comando, entonces nvidia-xconfigparece ser la herramienta a usar ( nvidia-xconfigpaquete para mí). De cualquier manera, generalmente obtendrá mejores resultados con el controlador propietario si está configurado correctamente. Estas herramientas al menos generarán un Xorg.confarchivo razonable que luego podrá modificar directamente o mediante uno de estos programas.

Graeme
fuente