web-dev-qa-db-fra.com

Mauvaise résolution d'écran de connexion

À quelques reprises, généralement après un redémarrage incorrect de mon ordinateur, la résolution de mon écran de connexion n’est pas celle par défaut de 1440x900, mais je pense de 1600x900. Maintenant, j'ai ce moniteur qui est vraiment mauvais pour gérer les résolutions qu'il n'est pas conçu pour gérer, et montrera une boîte de "résolution fausse" stupide sautant autour de l'écran.

Existe-t-il un moyen de charger l’écran de connexion d’une résolution 1440x900, quoi qu’il en soit? J'utilise Ubuntu 11.10 avec Unity et LightDM.

44
Ruben Bakker

Vous pouvez créer un script pour cela (source résolution LightDM ).

  1. Premièrement, nous devons savoir quel est l'identifiant de votre moniteur. Ouvrez un terminal, commencez à saisir terminal dans votre tiret d’unité pour afficher l’option ou appuyez sur Ctrl+Alt+T
  2. Tapez/copiez cette commande pour afficher vos détails d'affichage:

    xrandr -q
    

    Si vous n'avez qu'un seul moniteur, vous verrez une ligne dans la sortie comme suit (probablement avec des valeurs différentes, c'est l'identificateur au début que nous sommes après):

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

    L'identifiant d'écran est DVI-0 dans ce cas

  3. Ouvrez votre éditeur de texte préféré, utilisons gedit pour cet exemple, appuyez sur Alt+F2 et tapez gedit

  4. Tapez/copiez ceci en:

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

    Enregistrez ceci sur votre bureau sous le nom lightdmxrandr.sh

  5. Vous voudrez peut-être tester le script avant de le mettre en pratique. De retour dans le terminal, accédez à l'emplacement où nous venons de l'enregistrer:

    cd ~/Desktop
    

    Maintenant, nous devons le rendre exécutable:

    chmod a+rx lightdmxrandr.sh
    

    Maintenant, lancez-le:

    ./lightdmxrandr.sh
    

    (Si votre écran se corrige automatiquement après la connexion, vous ne verrez probablement pas de différence, vous voudrez peut-être utiliser une résolution de test différente, mais que vous saurez fonctionner pendant les tests.)

  6. Passons maintenant au petit script que nous avons créé:

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

    Si vous n'utilisez pas Sudo, vous risquez d'obtenir une erreur d'autorisation (j'utilise ce dossier par préférence personnelle)

  7. Nous devons maintenant lancer ceci dans lightdm, naviguer dans le bon dossier:

    cd /etc/lightdm
    
  8. Ouvrez le fichier lightdm conf:

    Sudo gedit lightdm.conf
    
  9. Ajoutez maintenant l’instruction pour exécuter votre script après la dernière ligne et enregistrez:

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

Maintenant, redémarrez et cela devrait définir la résolution correcte sur votre écran de connexion lightdm.

(ces instructions peuvent sembler longues mais elles ne prennent pas longtemps du tout)

40
captain_G

J'ai trouvé une solution de contournement très simple qui fonctionne parfaitement pour moi en cours d'exécution 13.04. ( update : maintenant 13.10) sur un ordinateur portable avec un écran externe de 24 "non connecté en permanence.

Je vais simplement copier de ici

  1. s'identifier
  2. utilisez xrandr ou l’utilitaire de contrôle d’affichage pour configurer vos moniteurs comme vous le souhaitez dans l’écran de connexion
  3. copier ~/.config/moniteurs.xml dans /var/lib/lightdm/.config

Comme mes moniteurs étaient déjà configurés correctement, je n’ai plus qu’à passer à l’étape 3.

Certaines autres réponses données ici ont fonctionné pour moi, mais uniquement dans un scénario spécifique, tout en présentant un risque de système inutilisable dans d'autres scénarios (LOW GRAPHICS MODE ERROR). Par exemple, avec le moniteur externe connecté en permanence (réponse acceptée par @captain_G) ou avec toujours le même périphérique connecté à la sortie utilisée pour le moniteur externe (script de @Axlrod). Il semble que la réponse de @ MarcoV soit la solution la plus générique, mais elle implique toujours des règles de script.

38
Tobold

Au lieu de créer un script, vous pouvez simplement ajouter au fichier /etc/lightdm/lightdm.conf une ligne comme celle-ci:

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

Avant d’insérer, assurez-vous que la commande fonctionne, car avec une commande incorrecte, lightdm ne démarrera pas.

20
eugeniy

Juste un petit peu amélioré ce qui précède script d'Axlrod .

Tout ce que vous avez à faire est de spécifier quel moniteur utiliser principal et quel est votre écran d'ordinateur portable (LVDS).

 #!/bin/bash 
 LVDS = "LVDS-0" 
 PRIMARY = "VGA-0" 
 
 function get_displays () 
 {
 xrandr -q | grep connecté | awk '{print $ 1}' 
} 
 
 function get_resolution () 
 {
 [[-z "$ 1"]] && return 0 || xrandr -q | grep -A1 1 $ | queue -1 | awk '{print $ 1}' | grep -e "^ [0-9]" 
} 
 
 pour l'affichage dans $ (get_displays); do 
 resolution = `get_resolution $ display` 
 
 [[$ display == $ PRIMARY]] && arg =" - primaire "; 
 [[- n $ resolution]] && mode = "- mode $ resolution"; 
 
 if [[$ display == $ LVDS]]; then 
 xrandr --output $ display --off 
 Elif [[-n $ mode]]; puis 
 xrandr --output $ display $ arg $ mode 
 fi 
 mode non défini, résolution d'argument; 
 terminé 
2
Ikko

Pour une configuration multi-écrans où vous pourriez déconnecter votre ordinateur portable et l'utiliser sans, voici une solution simple:

courir:

xrandr

Obtenez les appareils que vous utilisez avec un ordinateur portable est généralement LVDS1, et pour moi, j’ai un DP2 (displayport 2), il pourrait s’agir de HDMI1 ou de tout autre élément. Trouvez simplement ceux dont la résolution est indiquée à côté.

Créez ce petit fichier 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

Remplacez LVDS1 par la connexion du moniteur de votre ordinateur portable.

Remplacez DP2 par la connexion de votre moniteur externe.

Placez le script bash dans/usr/bin/local /

chmod + x le script

éditez le fichier /etc/lightdm/lightdm.conf

Ajouter

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

Redémarrez.

Le changement de résolution ne se produira que lorsque vous êtes actuellement à cet affichage.

Si vous avez plusieurs emplacements avec différents moniteurs/résolutions sur le même connecteur, vous devrez mettre plus d’intelligence dans votre script bash.

2
Alex R
Sudo gedit /usr/share/X11/xorg.conf.d/52-myres.conf

puis dans le fichier:

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

Sauvegarder et quitter. Les valeurs ont été obtenues à partir de la commande xrandr -q. VGA1 est le nom de mon connecteur et 1152x864 est le nom de la résolution.

Cela fonctionne pour Xubuntu 16.04. Il définit une résolution préférée et me permet de définir la résolution de l'écran de connexion au lieu de prendre en charge par défaut la résolution la plus élevée.

Modifié à partir des réponses ici

1
Michael Faraday

Ce que j’ai trouvé utile, c’est un article sur le site Web du guide Ubunt . 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 quand je l'ai réglée manuellement à 1440x900, elle était "virtuelle", je voulais dire que je devais faire défiler avec la souris pour explorer tout le bureau qui dépassait les dimensions réelles de l'écran.

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

Sudo gedit /etc/default/grub

L'éditeur de texte peut prendre un certain temps à charger. Une fois chargé, j'ai édité la ligne

GRUB_GFXMODE=1024x768

et l'a changé pour:

GRUB_GFXMODE=1440x900

N'oubliez pas d'exécuter update-grub pour appliquer les modifications.

Après cela, j'ai essayé de réinstaller les pilotes VESA (sur cet ordinateur, j'ai une GeForce 260 GTX). Je sais que le meilleur moyen consiste à utiliser les pilotes officiels Nvidia, mais le problème a toujours été le même ... Bien sûr, je pense que les performances seront encore pires.

Donc, en vérifiant le panneau Paramètres Nvidia X Server, j’ai vérifié que ma résolution avait été ajoutée et, en y retournant, l’écran était présenté de la bonne manière. En fait, j'utilise Ubuntu 11.10 mais sous GNOME Classic.

Je suis un novice en Linux, alors espérons avoir écrit des choses décentes.

1
Valinux

Si vous utilisez l'accélérateur GTK de LightDM, vous pouvez exécuter xrandr -q pour trouver les noms de vos moniteurs, puis éditer /etc/lightdm/lightdm-gtk-greeter et définir la propriété active-monitor comme décrit dans les commentaires contenus dans ce fichier. Cette propriété peut prendre plusieurs valeurs ordonnées, y compris #cursor pour le moniteur qui affiche actuellement le curseur de la souris.

0
Dzamo Norton

Le script d'Axelrod est quelque peu défectueux, car un grep pour 'connecté' saisit également tous les affichages 'déconnectés' ... pas ce que nous voulons ...

De plus, utiliser grep avec awk et tail, etc ... est un gaspillage de circuit, et je suggérerais ce qui suit ici. De plus, dans get_resolution, nous modifions le code de retour en 1, puisqu'un code de retour égal à zéro indique généralement l'absence d'erreurs. Nous utilisons donc 1 si le premier paramètre est absent.

En conclusion, en instanciant la partie principale du script dans une fonction, celle-ci peut être recherchée et exécutée à tout moment si nécessaire dans une bibliothèque de fonctions, tout en obtenant l'utilisation de variables locales, qui n'ont pas besoin d'être définies.

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;

Ne perdez pas de temps avec des scripts ou des fichiers de configuration qui pourraient rendre votre écran de connexion inutilisable!

À la place, connectez-vous et définissez vos paramètres d'écran préférés *, puis exécutez la commande suivante:

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

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

* N'oubliez pas de cliquer sur "Appliquer"

0
Nathan J.B.

j'aime joindre mon script qui configure les moniteurs à l'une des touches multimédias de mon clavier que je n'utilise pas autrement. Actuellement, le bouton "Windows Media Center" force mes écrans dans leur configuration préférée. Ainsi, si vous volez à l'aveugle et que vos moniteurs ne sont pas synchronisés sur la résolution souhaitée, écrasez simplement la touche de raccourci et tout est corrigé.

0
cryptozoologist

Voici comment je l'ai fait fonctionner dans Xubuntu 16.04.

Vous devez obtenir une chaîne de caractères pour la résolution souhaitée. C'est dans le résultat de la commande:

xrandr --verbose

Choisissez maintenant la partie avec la résolution souhaitée. Cela ressemblera à quelque chose comme:

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

À partir des données ci-dessus, vous devriez obtenir la chaîne 108.000 1152 1216 1344 1600 864 865 868 900 +HSync +VSync.

Pour trouver le nom de votre sortie, recherchez également une ligne similaire:

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

Ici, ma sortie s'appelle VGA1.

Maintenant, créez un script:

Sudo gedit /usr/share/lightdmxrandr.sh

Ensuite, dans le fichier, écrivez ce qui suit:

#!/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

Enregistrez et fermez le fichier. Rendre le script exécutable:

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

Créez un fichier de configuration pour appeler le script que vous venez de créer.

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

dans ce fichier, entrez:

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

Enregistrez et fermez le fichier. Redémarrez et si tout va bien la résolution que vous avez choisie sera à votre connexion.

En pratique, c'est la seule façon qui a fonctionné pour moi, même si recréer des résolutions existantes n'est pas logique.

Réponse modifiée à partir de cette question .

note

Le programme cvtest un autre moyen d’obtenir la chaîne de résolution longue. Pour obtenir une chaîne de résolution 1152x864, actualisez le taux de rafraîchissement 75.00:

cvt 1152 864 75

Cela m'a donné une résolution légèrement différente de celle de mon bureau, et c'est la raison pour laquelle je n'ai pas inclus la méthode dans la réponse principale.

0
Michael Faraday