Resolución de pantalla de inicio de sesión incorrecta


44

En alguna ocasión, generalmente después de reiniciar incorrectamente mi computadora, mi resolución de pantalla de inicio de sesión no es la predeterminada de 1440x900, pero creo que 1600x900. Ahora, tengo este monitor que es realmente malo para manejar resoluciones que no está diseñado para manejar, y mostrará un cuadro tonto de "resolución incorrecta" saltando por la pantalla.

¿Hay alguna manera de hacer que la pantalla de inicio de sesión cargue una resolución de 1440x900 sin importar qué? Estoy ejecutando Ubuntu 11.10 con Unity y LightDM.


Para mí, de todas las soluciones, solo esta funcionó en 18.04 ejecutando lightdm: askubuntu.com/questions/507726/…
Takkat

Respuestas:


40

Puede hacer un script para esto ( resolución de LightDM de origen ).

  1. En primer lugar, necesitamos averiguar cuál es el identificador de su monitor. Abra una terminal, comience a escribir terminalen el tablero de la unidad para ver la opción o presione Ctrl+ Alt+T
  2. Escriba / copie este comando para mostrar los detalles de su pantalla:

    xrandr -q
    

    Si solo tiene un monitor, verá una línea en la salida como la siguiente (probablemente con algunos valores diferentes, es el identificador al inicio que buscamos):

    DVI-0 connected 1680x1050+0+0 (normal left inverted right x axis y axis) 473mm x 296mm
    

    El identificador de pantalla es DVI-0 en este caso

  3. Abra su editor de texto favorito, usemos gedit para este ejemplo, presione Alt+ F2y escribagedit

  4. Escriba / copie esto en:

    #!/bin/sh
    xrandr --output DVI-0 --primary --mode 1440x900
    

    Guarda esto en tu escritorio como lightdmxrandr.sh

  5. Es posible que desee probar el script antes de ponerlo en práctica. De vuelta en la terminal, navegue hasta donde la acabamos de guardar:

    cd ~/Desktop
    

    Ahora necesitamos hacerlo ejecutable:

    chmod a+rx lightdmxrandr.sh
    

    Ahora ejecútelo:

    ./lightdmxrandr.sh
    

    (Si su pantalla se corrige automáticamente después de iniciar sesión, probablemente no verá una diferencia, por lo que es posible que desee utilizar una resolución de prueba que sea diferente, pero sabe que funciona durante la prueba)

  6. Ahora vamos a mover el pequeño script que hicimos:

    sudo mv ~/Desktop/lightdmxrandr.sh /usr/share/.
    

    Si no lo usa sudo, puede obtener un error de permiso (uso esta carpeta por preferencia personal)

  7. Ahora necesitamos ejecutar esto en lightdm, navegar a la carpeta correcta:

    cd /etc/lightdm
    
  8. Abra el archivo de configuración lightdm:

    sudo gedit lightdm.conf
    
  9. Ahora agregue las instrucciones para ejecutar su script después de la última línea y guarde:

    display-setup-script=/usr/share/lightdmxrandr.sh
    

Ahora reinicie y eso debería establecer la resolución correcta en su pantalla de inicio de sesión lightdm.

(estas instrucciones pueden parecer largas pero no toman mucho tiempo)


1
¡Gracias! Yo uso el guión de Leon mencionado a continuación. askubuntu.com/a/88882/28071
beanaroo

Es un buen guión, ¡creo que lo guardaré para usarlo en el futuro!
captain_G

Desafortunadamente, esto simplemente rompe las cosas en Ubuntu 13.04. Probablemente porque han estado haciendo algunos cambios masivos en el sistema operativo.
Patrick

Tampoco funciona con Ubuntu 13.10 + controlador NVIDIA 319: el script se ejecuta pero la resolución no cambia, probablemente porque el controlador NVIDIA lo anula.
hablador

Creo que debería ser chown root:roottambién?
Acuario Power

38

Encontré una solución muy simple que funciona perfectamente para mí ejecutando 13.04. ( actualización : ahora 13.10) en una computadora portátil con una pantalla externa de 24 "que no está conectada permanentemente.

Solo copiaré desde aquí

  1. iniciar sesión
  2. use xrandr o la utilidad de control Displays para configurar sus monitores como desea que se configuren en la pantalla de inicio de sesión
  3. copie ~ / .config / monitor.xml en /var/lib/lightdm/.config

Como ya tenía mis monitores configurados correctamente, solo tenía que hacer el paso 3.

Algunas otras respuestas dadas aquí funcionaron para mí, pero solo en un escenario específico mientras corría el riesgo de un sistema inutilizable en otros escenarios (ERROR DE MODO DE GRÁFICOS BAJOS). Por ejemplo, con el monitor externo conectado permanentemente (respuesta aceptada por @captain_G) o siempre con el mismo dispositivo conectado a la salida utilizada para el monitor externo (secuencia de comandos por @Axlrod). Parece que la respuesta de @ MarcoV es la solución más genérica, sin embargo, aún implica reglas de scripting.


44
Mucho más simple que las otras respuestas ... Me pregunto por qué no tiene más votos. Bueno, tiene el mío.
aap

Por otra parte, aunque ayuda a la pantalla de inicio de sesión, sería bueno que otros usuarios no tuvieran que configurar la resolución de pantalla nuevamente.
aap

3
En lugar de copiar el archivo, cree un enlace para que se actualice automáticamente cada vez que cambie la configuración de la pantalla: $ sudo ln ~/.config/monitors.xml /var/lib/lightdm/.config/monitors.xml(No, los enlaces simbólicos NO funcionan.)
Nathan JB

3
¿Qué aplicación escribe / actualiza monitors.xml? Estoy usando XFCE y este archivo tiene 2 años y está completamente desactualizado. No puedo encontrar un archivo similar.
scai

1
Este es el enfoque correcto en lugar de crear un script para cambiar las resoluciones. .config / monitor.xml puede admitir la configuración de múltiples monitores (es decir, su configuración en el trabajo con una base y 2 monitores frente a su configuración en casa sin base y 1 monitor externo). Crear una secuencia de comandos manual para establecer la resolución sería relativamente más complejo de hacer.
Iyad K

20

En lugar de crear una secuencia de comandos, puede agregar al archivo /etc/lightdm/lightdm.confuna línea como esta:

display-setup-script=xrandr --output default --mode 1280x720

Antes de insertar, asegúrese de que el comando funcione, porque con un comando incorrecto, lightdm no se iniciará.


Hola, tus xrandcomandos dicen:warning: output default not found; ignoring
SebMa

@SebMa ¡Tienes que usar el nombre de salida correcto!
Ken Sharp

2

Para una configuración de varios monitores donde puede desconectar su computadora portátil y usarla sin, aquí hay una solución simple:

correr:

xrandr

Obtener los dispositivos que está usando la computadora portátil generalmente es LVDS1, y para mí tengo un DP2 (displayport 2) que podría ser HDMI1 o cualquier otra cosa, solo encuentre los que tienen resoluciones enumeradas junto a ellos.

Crea este pequeño archivo bash:

#!/bin/bash

mode="$(xrandr -q|grep -A1 "DP2 connected"| tail -1 |awk '{ print $1 }')"
if [ -n "$mode" ]; then
  xrandr --output LVDS1 --off
  xrandr --output DP2 --primary --mode 2540x1440
fi

Reemplace LVDS1 con la conexión del monitor de su computadora portátil.

Reemplace DP2 con su conexión de monitor externo.

Coloque el script bash en / usr / bin / local /

chmod + x el script

editar /etc/lightdm/lightdm.conf

Añadir

display-setup-script=/path/to/my/script

Reiniciar.

El cambio de resolución solo ocurrirá cuando esté realmente en esa pantalla ahora.

Si tiene varios lugares con diferentes monitores / resoluciones en el mismo conector, tendrá que poner más inteligencia en su script bash.


2

Solo un poco mejoró el guión de Axlrod anterior .

Todo lo que necesita hacer es especificar qué monitor usar primario y cuál es la pantalla de su computadora portátil (LVDS).

#! / bin / bash
LVDS = "LVDS-0"
PRIMARIO = "VGA-0"

función get_displays ()
{
        xrandr -q | grep conectado | awk '{print $ 1}'
}

función get_resolution ()
{
        [[-z "$ 1"]] && return 0 || xrandr -q | grep -A1 $ 1 | cola -1 | awk '{print $ 1}' | grep -e "^ [0-9]"
}

para mostrar en $ (get_displays); hacer
        resolución = `get_resolution $ display`

        [[$ display == $ PRIMARY]] && arg = "- primario";
        [[-n $ resolución]] && mode = "- modo $ resolución";

        si [[$ display == $ LVDS]]; entonces
                xrandr --output $ display --off
        elif [[-n $ modo]]; entonces
                xrandr --output $ display $ arg $ mode
        fi
        resolución de arg de modo no establecido;
hecho

1
sudo gedit /usr/share/X11/xorg.conf.d/52-myres.conf

luego en el archivo:

Section "Monitor"
    Identifier "VGA1"
    Option "PreferredMode" "1152x864"
EndSection

Guardar y Salir. Los valores se obtuvieron del comando xrandr -q. VGA1es el nombre de mi conector y 1152x864es el nombre de la resolución.

Esto funciona para Xubuntu 16.04. Establece una resolución preferida y para mí me permitió establecer la resolución de la pantalla de inicio de sesión, en lugar de tenerla predeterminada a la resolución más alta admitida.

Modificado de respuestas aquí


1
Después de instalar open-vm-tools y open-vm-tools-desktop, copiar monitor.xml a /var/lib/lightdm/.config ya no me funcionaba. Especificar la resolución preferida como esta me lo arregló.
jropella

1

Lo que he encontrado útil fue una publicación en el sitio web de la guía de Ubuntu . Probé muchas cosas en Ubuntu 11.10 e incluso intenté usar simplemente GNOME Classic. La resolución siempre fue 1024x768 y cuando lo configuré manualmente a 1440x900 era "virtual", quiero decir que tuve que desplazarme con el mouse para explorar todo el escritorio que estaba más allá de las dimensiones reales de la pantalla.

En la Terminal ejecuté este comando:

sudo gedit /etc/default/grub

El editor de texto puede tardar un poco en cargar. Una vez que se cargó, edité la línea

GRUB_GFXMODE=1024x768

y lo cambió a:

GRUB_GFXMODE=1440x900

Recuerde ejecutar update-grubpara aplicar los cambios.

Después de eso intenté reinstalar los controladores VESA (en esta computadora tengo una GeForce 260 GTX). Sé que la mejor manera es usar los controladores oficiales de Nvidia, pero usarlos siempre fue el mismo problema ... Claro, creo, ahora el rendimiento será peor.

Entonces, al verificar el panel de configuración del servidor Nvidia X, verifiqué que mi resolución se agregó y, al cambiarla, hizo que la pantalla tuviera el aspecto correcto. En realidad estoy usando Ubuntu 11.10 pero en GNOME Classic.

Soy un novato en Linux, así que espero haber escrito cosas decentes.


0

¡No juegues con scripts o archivos de configuración que tienen la posibilidad de hacer que tu pantalla de inicio de sesión sea inutilizable!

En su lugar, inicie sesión y configure su configuración de pantalla preferida *, luego ejecute este comando:

sudo ln ~/.config/monitors.xml /var/lib/lightdm/.config/monitors.xml

Su resolución de inicio de sesión ahora siempre reflejará la configuración del usuario al que está conectado actualmente.

* No olvides hacer clic en "Aplicar"


Esto funciona pero es secundario. Realiza una carga normal en la resolución máxima y luego cambia a su configuración. ¿Cómo puedes hacer que cargue la resolución correcta para comenzar?
Goddard

0

La secuencia de comandos de Axelrod es algo defectuosa, ya que un grep para 'conectado' toma todas las pantallas 'desconectadas' también ... no es lo que queremos ...

Además, usar grep con awk y tail, etc. es un desperdicio tortuoso, y sugeriría lo siguiente a continuación. Además, en get_resolution cambiamos el código de retorno a 1, ya que un código de retorno de cero generalmente indica una falta de errores, por lo tanto, usamos 1 si el primer parámetro está ausente.

En conclusión, al crear una instancia de la parte principal del script, una función se puede obtener y ejecutar en cualquier momento si es necesario en una biblioteca de funciones, así como obtener el uso de variables locales, que no necesitan ser desarmadas.

function get_displays()
{
    xrandr -q | awk '($2 == "connected") {print $1;}'
};

# the "\" and c/r were added for readability on this website
# I do not have them in my code variant that I use.
function get_resolution()
{
    [[ -z "$1" ]] && return 1;
    xrandr -q | \
    awk -v display="$1" '($1 == display && $2 == "connected") {getline; print $1;}';
};

function setup_displays()
{
    local   primary=${2:-"VGA-0"};
    local   lvds=${3:-"LVDS-0"};

    for display in $(get_displays);
    do
            local   resolution=${1:-"$(get_resolution $display)"};

            [[ $display == $primary ]] && local arg="--primary";
            [[ -n $resolution ]] && local mode="--mode $resolution";

            if [[ $display == $lvds ]];
            then
                    xrandr --output $display --off;
            elif [[ -n $mode ]];
            then
                    xrandr --output $display $arg $mode;
            fi;
    done;
};

setup_displays;

0

Así es como lo hice funcionar en Xubuntu 16.04.

Necesita obtener una cadena para la resolución deseada. Esto está dentro del resultado del comando:

xrandr --verbose

Ahora elija la parte con la resolución que desee. Se verá algo así como:

1152x864 (0xa6) 108.000MHz +HSync +VSync
    h: width  1152 start 1216 end 1344 total 1600 skew    0 clock  67.50KHz
    v: height  864 start  865 end  868 total  900           clock  75.00Hz

De los datos anteriores, debe obtener la cadena 108.000 1152 1216 1344 1600 864 865 868 900 +HSync +VSync.

Para encontrar el nombre de su salida, busque una línea similar también:

VGA1 connected 1152x864+0+0 (0xa4) normal (normal left inverted right x axis y axis) 306mm x 230mm

Aquí se nombra mi salida VGA1.

Ahora crea script:

sudo gedit /usr/share/lightdmxrandr.sh

Luego en el archivo escriba lo siguiente:

#!/bin/sh
xrandr --newmode "1152x864_75.00"  108.000  1152 1216 1344 1600  864 865 868 900 +HSync +VSync
xrandr --addmode VGA1 "1152x864_75.00"
xrandr --output VGA1 --mode 1152x864_75.00 --pos 0x0 --rotate normal

Guardar y cerrar archivo. Hacer script ejecutable:

sudo chmod a+rx /usr/share/lightdmxrandr.sh

Cree un archivo de configuración para llamar al script que acaba de crear.

sudo gedit /etc/lightdm/lightdm.conf.d/00-myres.conf

dentro de este archivo ingrese:

[Seat:*]
display-setup-script=/usr/share/lightdmxrandr.sh

Guardar y cerrar archivo. Reinicie y esperemos que la resolución que elija esté en su inicio de sesión.

En términos prácticos, esta es la única forma que funcionó para mí, a pesar de que volver a crear resoluciones existentes no es lógico.

Respuesta modificada de esta pregunta .

Nota

Una forma alternativa de obtener la cadena de resolución larga es el programa cvt. Para obtener una cadena para la resolución 1152x864, frecuencia de actualización 75.00:

cvt 1152 864 75

Esto me dio una resolución ligeramente diferente a la resolución de mi escritorio, y es la razón por la que no incluí el método en la respuesta principal.


0

Si está utilizando el saludo GTK de LightDM, puede ejecutar xrandr -qpara encontrar los nombres de sus monitores y luego editar /etc/lightdm/lightdm-gtk-greetery configurar la propiedad active-monitorcomo se describe en los comentarios dentro de ese archivo. Esta propiedad puede tomar múltiples valores ordenados, incluso #cursorpara el monitor que actualmente muestra el cursor del mouse.


0

Me gusta adjuntar mi script que configura los monitores a una de las teclas multimedia en mi teclado que de otro modo no uso. Actualmente tengo el botón etiquetado 'Windows Media Center' forzar mis pantallas en su configuración preferida. De esta manera, si está volando a ciegas y sus monitores no se sincronizan con la resolución deseada, solo apriete la tecla de acceso rápido y todo estará solucionado.


-1

"Modos de pantalla preferidos" podría ser el problema

Supongo que su monitor informa que la alta resolución de pantalla es la preferida. Ahora desea anular esta preferencia predeterminada . Vea mi respuesta a una pregunta muy similar para obtener detalles sobre cómo se puede hacer esto.

Tuve el problema opuesto: siempre obtuve una resolución de pantalla más baja (1280x1024) que la que quería (1600x1200). Sin embargo, la solución que he encontrado (y descrita en la respuesta vinculada) será aplicable de manera análoga a su problema.


Quien haya rechazado mi respuesta, ¿podría agregar una nota sobre por qué cree que esta respuesta no es útil?
Chriki

-2

Tuve el mismo problema en mi MacBook Pro a mediados de 2014 (11,1) con Xenial. He probado todas las soluciones antes mencionadas en varias formas, pero invariablemente pondría a X en modo de gráficos bajos a prueba de fallas (pero se muestra en la misma resolución que quería que se estableciera por defecto, nada menos.

Después de mucho discutir sobre los foros y buscar en Google, resulta que había olvidado la solución potencial más simple y predeterminada: nomodeset. Eso solucionó el problema.

TL; DR: ¡No te olvides de probar nomodeset! Percepción extrasensorial. en un MacbookPro 11,1.


-3

He creado este script para hacerlo más dinámico (múltiples espacios de trabajo / monitores diferentes).

Solo molestia: cuando inicia sesión desde lightdm, la pantalla sigue parpadeando como si quisiera cambiar la resolución: s


1
No se encontró la pasta.
Tobold

En efecto; Si todavía tiene una copia local del script, considere volver a cargarlo.
wchargin

1
He subido el script a github. No sé por qué paste.ubuntu.com lo eliminó :(
Leon
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.