46 votes

Mauvaise résolution de l'écran de connexion

De temps en temps, généralement après un redémarrage incorrect de mon ordinateur, la résolution de mon écran de connexion n'est pas la résolution par défaut de 1440x900, mais je pense 1600x900. Or, j'ai un moniteur qui gère très mal les résolutions pour lesquelles il n'a pas été conçu, et qui affiche une boîte "mauvaise résolution" qui saute autour de l'écran.

Existe-t-il un moyen de faire en sorte que l'écran de connexion affiche une résolution de 1440x900 quoi qu'il arrive ? J'utilise Ubuntu 11.10 avec Unity et LightDM.

2voto

Ikko Points 21

Juste une petite amélioration de ce qui précède Le script d'Axlrod .

Tout ce que vous avez à faire est de spécifier quel moniteur doit être utilisé en premier, et quel est l'écran de votre ordinateur portable (LVDS).

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

function get\_displays()
{
        xrandr -q | grep connected | awk '{print $1}'
}

function get\_resolution()
{
        \[\[ -z "$1" \]\] && return 0 || xrandr -q | grep -A1 $1 | tail -1 | awk '{print $1}' | grep -e "^\[0-9\]"
}

for display in $(get\_displays); do
        resolution=\`get\_resolution $display\`

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

        if \[\[ $display == $LVDS \]\]; then
                xrandr --output $display --off
        elif \[\[ -n $mode \]\]; then
                xrandr --output $display $arg $mode
        fi
        unset mode arg resolution;
done

1voto

Valinux Points 11

Ce que j'ai trouvé utile, c'est un post sur le site de la Site web du guide Ubuntu . J'ai essayé tellement de choses dans Ubuntu 11.10 et j'ai même essayé d'utiliser simplement GNOME Classic. La résolution était toujours de 1024x768 et lorsque je l'ai réglée manuellement sur 1440x900, elle était "virtuelle", c'est-à-dire que je devais faire défiler la souris pour explorer l'ensemble du bureau qui dépassait les dimensions réelles de l'écran.

Dans le terminal, j'ai exécuté la commande suivante :

sudo gedit /etc/default/grub

Le chargement de l'éditeur de texte peut prendre un certain temps. Une fois chargé, j'ai édité la ligne

GRUB_GFXMODE=1024x768

et l'a remplacée par :

GRUB_GFXMODE=1440x900

N'oubliez pas de courir update-grub pour appliquer les modifications.

Après cela, j'ai essayé de réinstaller les pilotes VESA (dans cet ordinateur, j'ai un GeForce 260 GTX). Je sais que la meilleure solution est d'utiliser les pilotes officiels de Nvidia, mais en les utilisant, le problème était toujours le même... Bien sûr, je pense que les performances seront moins bonnes maintenant.

En consultant le panneau des paramètres du serveur Nvidia X, j'ai vérifié que ma résolution avait été ajoutée et, en passant à celle-ci, l'écran s'est mis à ressembler à ce qu'il était. En fait, j'utilise Ubuntu 11.10 mais avec GNOME Classic.

Je suis un débutant sous Linux, j'espère donc avoir écrit des choses convenables.

0voto

Chriki Points 1343

Les "modes d'écran préférés" pourraient être à l'origine du problème

Je suppose que votre moniteur indique que la résolution d'écran élevée est préférée. Vous souhaitez maintenant remplacer cette préférence par défaut . Voir ma réponse à une question très similaire pour plus de détails sur la manière de procéder.

J'avais le problème inverse : j'obtenais toujours une résolution d'écran inférieure (1280x1024) à celle que je souhaitais (1600x1200). La solution que j'ai trouvée (et décrite dans la réponse liée) sera, je l'espère, applicable de manière analogue à votre problème.

0voto

Ben Stiglitz Points 3054

Ne vous mêlez pas de scripts ou de fichiers de configuration qui pourraient rendre votre écran de connexion inutilisable !

Au lieu de cela, connectez-vous et définissez vos paramètres d'écran préférés*, puis exécutez cette commande :

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

Votre résolution de connexion reflète désormais toujours les paramètres de l'utilisateur auquel vous êtes connecté.

*N'oubliez pas de cliquer sur "Postuler".

0voto

Le script d'Axelrod est quelque peu défectueux, étant donné qu'une recherche de "connecté" permet d'obtenir tous les affichages "déconnecté" également... ce qui n'est pas ce que nous voulons...

De plus, l'utilisation de grep avec awk et tail, etc... est un gaspillage de circuits, et je suggère ce qui suit. En outre, dans get_resolution, nous remplaçons le code de retour par 1, puisqu'un code de retour de zéro indique généralement l'absence d'erreurs, et nous utilisons donc 1 si le premier paramètre est absent.

En conclusion, en instanciant la partie principale du script en tant que fonction, elle peut être reprise et exécutée à tout moment si nécessaire dans une bibliothèque de fonctions et bénéficier de l'utilisation de variables locales, qui n'ont pas besoin d'être réinitialisées.

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;

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X