¿Cómo puedo hacer que la personalización de xrandr sea permanente?

65

Solía ​​editar el script de inicio para el GDM (/ etc / gdm / Init / Default) para cambiar permanentemente la resolución de mi pantalla.

¿Cómo puedo hacer esto con LigthDM en Ubuntu Oneiric?

Edocastillo
fuente
agregue a .xprofile en su carpeta de inicio. Consulte askubuntu.com/questions/63863/… para obtener una guía básica para configurar la resolución y agregar a .xprofile
duffydack

Respuestas:

21

Creo que puedes agregar los modos de visualización /etc/X11/xorg.conf.

Si no tiene un xorg.conf, entonces puede usar lo siguiente como base. Es necesario sustituir las entradas con los nombres Modeline, Drivery Modescon las entradas correctas para su sistema. Dependiendo de su hardware, puede necesitar entradas adicionales, por ejemplo, si su sistema tiene más de un chip gráfico.

Section "Monitor"
    Identifier    "Monitor0"
    Modeline "1280x1024_60.00"  109.00  1280 1368 1496 1712  1024 1027 1034 1063 -hsync +vsync
    Modeline "1024x768_60.00"   63.50  1024 1072 1176 1328  768 771 775 798 -hsync +vsync
EndSection

Section "Screen"
    Identifier     "Screen0"
    Device         "Card0"
    Monitor        "Monitor0"
    SubSection "Display"
        Modes       "1280x1024_60.00" "1024x768_60.00"
    EndSubSection
EndSection

Section "Device"
    Identifier    "Card0"
    Driver        "nvidia"
EndSection

Si no conoce el nombre del controlador de video que está usando su sistema, puede obtener el nombre de la siguiente manera (si tiene un chip gráfico Intel, el nombre del controlador es solo "Intel"):

lshw -class display | grep "driver"

Las modelinas se pueden generar con cvt:

cvt <h-resolution> <v-resolution> [refresh]
Nimmermehr
fuente
Intenté esto y no arrancó por alguna razón. Utilicé la línea de modo generada por el cvtcomando y el controlador del otro (y lo intenté vesatambién), pero simplemente se colgó sin mensajes de error. La solución de Jon Roberts funcionó perfectamente para mí y es independiente de cosas como el controlador de la tarjeta de video que mencionas aquí, que podría salir mal para los novatos, por lo tanto, estoy votando su respuesta.
Mike
1
Esto no parece ayudar para cosas como - rotar.
Jherico
2
Esta respuesta está desactualizada. Vea la respuesta de John Roberts
uso
+1 Perfecto-o! Usando GDM con Gnome 3.16, y esto hizo que mi GDm reconociera monitores 1080p. ¡Gracias!
eduncan911
En mi computadora, lshwsalida i915, sin embargo, el controlador correcto es intel.
user202729
63

Modifique /etc/lightdm/lightdm.confpara agregar las siguientes opciones:

display-setup-script> llama a mycustomloginvideo.sh antes de que aparezca la pantalla de inicio de sesión

session-setup-script> llama a mycustomdesktopvideo.sh antes de que comience la sesión de escritorio del usuario

[SeatDefaults]
greeter-session=unity-greeter
user-session=ubuntu
# for your login screen, e.g. LightDM (Ubuntu 11.10) or GDM (11.04 or earlier)
display-setup-script=/usr/share/mycustomloginvideo.sh
# for your desktop session
session-setup-script=/usr/share/mycustomdesktopvideo.sh

Es posible que la herramienta gui "arandr" genere el script sh anterior, seleccionando parámetros de la configuración X de su sesión actual.

Asegúrese de que su script de shell sea ejecutable:

chmod a+x /usr/share/mycustom*video.sh

y puede probar que funciona (es decir, que no tiene ningún error tipográfico o de configuración en su comando xrandr) simplemente ejecutándolo en un terminal:

/usr/share/mycustomdesktopvideo.sh

Si el script de inicio de sesión no funciona por algún motivo, es posible que su máquina no complete el proceso de inicio en la pantalla de inicio de sesión. Si el script de escritorio falla, es posible que no obtenga un escritorio después de iniciar sesión. Si está configurando un monitor externo, estos scripts fallarán cuando lo desconecte y la sesión X no se iniciará.

Jon Roberts
fuente
Para Mint 13 XFCE con mdm, edite / etc / mdm / Init / Default. Llame a su script antes de la "salida 0"
StackUnder
Evnn funciona en Fedora ... solo necesitaba el display-setup-scriptscript ya que Xfce ya lo tenía configurado por la configuración de la pantalla, por lo que session-setup-scriptme dejó en la pantalla de inicio de sesión.
Wilf
10

Alguien publicó otra solución, aunque debo decir que no funcionó para mí. Probablemente podría funcionar para ti. En mi caso, rompe la unidad y solo puedo mover el cursor del mouse. El panel superior del indicador de la aplicación parece vacío, pero después de desconectar mi LCD pude eliminar las líneas agregadas y todo volvió a la normalidad.

editar el archivo /usr/sbin/lightdm-session

Así es como se ve la primera parte de ese archivo ahora:

#!/bin/sh
#
# LightDM wrapper to run around X sessions.

echo "Running X session wrapper"

# Load profile
for file in "/etc/profile" "$HOME/.profile" "/etc/xprofile" "$HOME/.xprofile"; do
  if [ -f  "$file" ]; then
     echo "Loading profile from $file";
     . "$file"
  fi
done

xrandr --newmode "1368x768_60.00" 85.25 1368 1440 1576 1784 768 771 781 798 -hsync +vsync
xrandr --addmode CRT1 1368x768_60.00
xrandr --output CRT1 --mode 1368x768_60.00

# Load resources

Tenga en cuenta que la configuración de Xrandr debe cambiarse para que coincida con la suya.

Meconio
fuente
Esta solución funcionó muy bien para lubuntu 17.x en una máquina vieja. Afecta solo a la sesión, por lo que la pantalla de inicio de sesión de bienvenida no se muestra con la resolución deseada.
laconbass
6

He estado tratando de resolver un problema similar por un tiempo y encontré una solución que funciona para mí, así que espero que me ayude ...

Tengo un viejo aspirante AOA110 en el que he roto la pantalla muchas veces y después de comprar un nuevo portátil decidí que trataría de convertirlo en un HTPC, pero la pantalla externa que tengo no es reconocida por X, así que tuve que "Ajústelo" varias veces para que funcione con la resolución correcta.

Aquí esta lo que hice:

Después de usar este http://ubuntuforums.org/showthread.php?t=1112186 tutorial hasta el paso 5, pude encontrar una resolución aceptable y que funcionaba en xrandr, pero esto no funcionaba en la pantalla de inicio de sesión de LightDM.

No siga los pasos para que sea persistente en lo anterior, pero puede ser la forma correcta de hacerlo en 11.10. Encontré esta publicación en ArchWiki https://wiki.archlinux.org/index.php/Xorg que adapté a mis necesidades.

Primero cree un archivo aquí: /etc/X11/xorg.conf.d/10-monitor.conf

Luego agregue los detalles X apropiados para su pantalla, así es como se veía el mío:

Section "ServerLayout"
Identifier     "DualSreen"
Screen       0 "Screen0"
Screen       1 "Screen1" RightOf "Screen0" #Screen1 at the right of Screen0
#Option         "Xinerama" "1" #To move windows between screens
EndSection

Section "Monitor"
Identifier     "LVDS1"
Option         "ignore" "true"
EndSection

Section "Monitor"
Identifier     "VGA1"
Option         "Enable" "true"
Modeline "1440x900_60.00"  106.47  1440 1520 1672 1904  900 901 904 932  -HSync +Vsync
EndSection

Section "Device"
Identifier     "Device0"
Driver         "intel"
Screen         0
EndSection

Section "Device"
Identifier     "Device1"
Driver         "intel"
Screen         1
EndSection

Section "Screen"
Identifier     "Screen0"
Device         "Device0"
Monitor        "VGA1"
DefaultDepth    24
Option         "TwinView" "0"
SubSection "Display"
    Depth          24
    Modes          "1440x900_60.00"
EndSubSection
EndSection

Section "Screen"
Identifier     "Screen1"
Device         "Device1"
Monitor        "LVDS1"
DefaultDepth   24
Option         "TwinView" "0"
SubSection "Display"
    Depth          24
EndSubSection
EndSection

Los bits importantes para agregar están debajo del apropiado Section "Monitor"incluyen el apropiado Modelineque encontró al usar gtf 1440 900 60.00y luego debajo del correspondiente, Section "Screen"incluido el correcto Modes.

Notarás que lo que estaba tratando de hacer no era solo configurar la conexión VGA1 a una resolución adecuada, sino también decirle que no usara mi salida LVDS1. Obviamente, deberá ajustar los suyos adecuadamente para que coincidan con el número correcto de salidas y las secciones correctas de Dispositivo, Pantalla y Pantalla para su configuración.

Perdón por la publicación épica, he estado ajustando archivos xorg.conf desde hace algún tiempo con la pantalla Hannspree que he estado usando y las antiguas configuraciones de xorg.conf que usaba antes de 11.10 simplemente ya no funcionan correctamente, esta es la La única solución que he encontrado que funciona.

¡Buena suerte!

fefricción
fuente
El uso xrandr -qdebería darle la información correcta sobre qué pantalla se está utilizando y los posibles modos.
faithinfriction
Se puede generar un archivo de configuración básico ejecutando Xorg :1 -configure, lo que crea un nuevo servidor X y genera un archivo de configuración a partir de él; esto se puede copiar de /root/xorg.conf.newa /etc/X11/xorg.conf. Encontré una mejor manera fue la respuesta anterior
Wilf
5

Tuve un problema similar con mi computadora portátil que el anterior, y quería agregar algo a la conversación. Si no le importa la resolución de inicio de sesión (no me importa), pero desea que el espacio de trabajo real sea la resolución correcta, puede agregar la información de su monitor a LightDM pero no activar la resolución completa hasta que inicie sesión.

Acabo de agregar el siguiente script para mi monitor en un archivo: lighdmxrandr

xrandr --newmode "1440x900_60.00"  106.50  1440 1528 1672 1904  900 903 909 934 -hsync +vsync
xrandr --addmode VGA1 1440x900_60.00

entonces lo llamo /etc/lightdm/lightdm.conf

display-setup-script=/usr/bin/lightdmxrandr

Una vez que inicie sesión, puedo configurar mi monitor en pantallas y funciona, incluso después de volver a iniciar sesión (solía darme un gran error feo).

Karl
fuente
Esto funcionó según lo deseado, pero tuvo que reiniciar, no volver a iniciar sesión ...
CrandellWS
4

Como una mejora para la respuesta de Jon Roberts, permítanme especificar que arandr no incluye en su generación de script sh todos los parámetros que funcionan en la sesión actual. Monitor primario (en caso de que esté utilizando una configuración de monitor dual), la frecuencia de actualización y la configuración de gamma para cada monitor no están incluidos, por ejemplo. Mi script de sesión se ve así:

#!/bin/sh
xrandr --output LVDS --mode 1366x768 --pos 1600x432 --rotate normal --output HDMI-0 --off --output DVI-0 --off --output VGA-1 --mode 1600x1200 --rate 85 --pos 0x0 --rotate normal --primary
xrandr --output VGA-1 --gamma 0.8:0.7:0.55 

Agregué manualmente las opciones --rate y --primary en la primera línea y luego agregué manualmente una segunda línea con la corrección gamma porque aparentemente la configuración de gamma xrandr se pierde cada vez que cambia un monitor a primario .

No sé si este comportamiento particular con la configuración de gamma al hacer que un monitor sea primario es intencionado o es un error.

Además, lightdm no llama al script de shell de sesión, sino como una aplicación de inicio, porque parece que lightdm llama al script antes de que las cosas estén listas para xrandr y sucedan cosas extrañas.

Hermes
fuente
4

Tuve el problema de querer una pantalla extendida en mi nuevo cuadro LXDE, (no un clon dual), encontré el comando correcto, pero no pude hacerlo permanente.

xrandr --output VGA-0 --right-of DVI-0

Todos los métodos anteriores parecían demasiado difíciles / no era la forma correcta de hacerlo.

Finalmente encontré esto: http://www.sudo-juice.com/change-lxde-screen-resolution-ubuntu-lubuntu/

Eso funcionó de maravilla, pero usé gedit en su lugar:

gksu gedit /etc/xdg/lxsession/LXDE/autostart

Luego agregó la línea al final con un símbolo @ al comienzo:

@xrandr --output VGA-0 --right-of DVI-0

Espero que ayude y gracias a sudo-juice.

PD Tenga -en cuenta el doble en el comando xrandr --(no apareció muy claramente en mi pantalla).

abisdad
fuente
2

Cree un nuevo documento y asígnele un nombre, por ejemplo, /home/yourusername/yourscriptname.sh escriba

#!/bin/bash
xrandr --newmode "1600x900_60.00"  118.25  1600 1696 1856 2112  900 903 908 934 -hsync +vsync
xrandr --addmode VGA1 1600x900_60.00
xrandr --output VGA1 --mode 1600x900_60.00
unity --replace

y guárdelo en su carpeta de inicio (esto establece la resolución en 1600x900)

Abra las Aplicaciones de inicio (o ejecute gnome-session-properties) y haga clic en "AGREGAR". Dé un nombre y escriba en la línea de comando:

bash /home/yourusername/yourscriptname.sh

Guárdelo y ahora el script se ejecutará cada vez que inicie sesión, por lo que deberá cerrar sesión primero para que surta efecto. Ejecutar el comando (por ejemplo bash /home/yourusername/yourscriptname.sh) en un terminal también sería una buena idea para verificar si el script funciona.

Nikhil
fuente
Esto fue editado (en su lugar, si se eliminó) por el OP de esta respuesta, ya que se publicó aquí en lugar de aquí : restauré el formato original, ya que esto puede ser útil, ya que debería restaurar la configuración de xrandr al iniciar sesión, el contenido del script bash debería probablemente sea reemplazado con los comandos xrandr utilizados para obtener la configuración correcta.
Wilf
En mi pantalla de monitor dual, se está leyendo el EDID para mi pantalla HDMI-0, pero no se está leyendo el EDID para mi DVI-0. Apuntar a un script de configuración almacenado /usr/binno funcionó, pero agregar ese script a mis aplicaciones de inicio gnome-session-propertiesfue exitoso.
noobninja
1

Basado en las respuestas superiores, hice algunas pruebas y encontré un método útil que me funciona, luego creé un script simple para automatizarlo con mis instalaciones automáticas. Pero funcionará para cualquier otro caso.

Cree un scriptinstallxrandrfixed.sh Agregue estas líneas:

#Variables for lightdm script and xrandr script to setup fixed resolution for old displays: 
xrandrscript=/usr/local/bin/xrandrscript.sh
lightdmstartscript=/usr/share/lightdm/lightdm.conf.d/60-xrandrscript.conf

 #Added old style configuration for lightdm: 
 sudo  ln -s /usr/share/lightdm/lightdm.conf.d /etc/lightdm/lightdm.conf.d
 #A fix to some old displays in high school at Fray Bentos, fix to 1024x768
 #Some useful information comes from: http://askubuntu.com/questions/63681/how-can-i-make-xrandr-customization-permanent
 sudo sh -c "echo '[SeatDefaults]' > $lightdmstartscript"
 # for your login screen, e.g. LightDM (Ubuntu 11.10) or GDM (11.04 or earlier)
 sudo sh -c "echo 'display-setup-script=$xrandrscript' >> $lightdmstartscript"
 # for your desktop session
 sudo sh -c "echo 'session-setup-script=$xrandrscript' >> $lightdmstartscript"
 sudo sh -c "echo 'xrandr --size 1024x768 --rate 60.0' > $xrandrscript"
 sudo chmod +x $xrandrscript

creará los scripts y los archivos para la visualización y sesión de lightdm. no olvides darle permiso para ejecutar

chmod + x scriptinstallxrandrfixed.sh

Y ejecutar

./scriptinstallxrandrfixed.sh (debe estar ubicado en el mismo directorio donde tiene el archivo).

si no está en el mismo directorio: /path/to/script/scriptinstallxrandrfixed.sh

Modifícalo según tus necesidades. Saludos cordiales. Pablo

pablodav
fuente