Mauvaise résolution d'écran de connexion

44

Sur une occasion étrange, généralement après le 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 "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.

Ruben Bakker
la source
Pour moi, de toutes les solutions, seule celle-ci fonctionnait en 18.04 avec lightdm: askubuntu.com/questions/507726/…
Takkat du

Réponses:

40

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

  1. Premièrement, nous devons savoir quel est l'identifiant de votre moniteur. Ouvrez un terminal, commencez à taper terminaldans votre tiret d'unité pour voir 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'identifiant 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 de l'écran est DVI-0 dans ce cas

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

  4. Tapez / copiez ceci en:

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

    Enregistrez ceci sur votre bureau sous 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, sudovous 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. Maintenant, ajoutez les instructions 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)

captain_G
la source
1
Merci! J'utilise le script de Leon mentionné ci-dessous. askubuntu.com/a/88882/28071
beanaroo
C'est un bon script, pense que je vais le stocker pour une utilisation future!
captain_G
Malheureusement, cela casse les choses dans Ubuntu 13.04. Probablement parce qu'ils ont apporté des modifications massives au système d'exploitation.
Patrick
Ne fonctionne pas non plus avec le pilote Ubuntu 13.10 + NVIDIA 319: le script est exécuté mais la résolution ne change pas - probablement parce que le pilote NVIDIA le remplace.
parle
Je pense que ça devrait être chown root:rootaussi?
Aquarius Power
38

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

Je vais juste copier d' ici

  1. s'identifier
  2. utilisez xrandr ou l'utilitaire de contrôle de moniteurs 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.

Tobold
la source
4
Beaucoup plus simple que les autres réponses ... Je me demande pourquoi il n'y a pas plus de votes. Eh bien, il a le mien.
aap
Là encore, bien que cela aide l'écran de connexion, il serait bien que d'autres utilisateurs n'aient pas à configurer à nouveau la résolution d'affichage.
aap
3
Plutôt que de copier le fichier, créez un lien vers celui-ci afin qu'il soit automatiquement mis à jour lorsque vous modifiez vos paramètres d'écran: $ sudo ln ~/.config/monitors.xml /var/lib/lightdm/.config/monitors.xml(Non, les liens symboliques NE FONCTIONNENT PAS.)
Nathan JB Le
3
Quelle application écrit / met à jour monitors.xml? J'utilise XFCE et ce fichier date de 2 ans et est complètement obsolète. Je ne trouve pas de fichier similaire.
scai
1
C'est la bonne approche par opposition à la création d'un script pour changer les résolutions. .config / moniteurs.xml peut prendre en charge plusieurs configurations de moniteur (c’est-à-dire que votre configuration au travail avec un dock et 2 moniteurs est vs votre configuration à la maison sans aucun dock et 1 moniteur externe). Création d'un script manuel pour définir la résolution serait relativement plus complexe à faire.
Iyad K
20

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

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

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

eugéni
la source
Bonjour, vos xrandcommandes disent:warning: output default not found; ignoring
SebMa
@SebMa Vous devez utiliser le nom de sortie correct!
Ken Sharp
2

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 autre, il suffit de trouver 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émarrer.

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.

Alex R
la source
2

Juste un petit peu amélioré le script ci-dessus 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"

fonction get_displays ()
{
        xrandr -q | grep connecté | awk '{print $ 1}'
}

fonction 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); faire
        résolution = `get_resolution $ display`

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

        if [[$ display == $ LVDS]]; puis
                xrandr --output $ display --off
        elif [[-n $ mode]]; puis
                xrandr --output $ display $ arg $ mode
        Fi
        mode non défini, résolution d'argument;
terminé
Ikko
la source
1
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. VGA1est le nom de mon connecteur et 1152x864le 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

Michael Faraday
la source
1
Après avoir installé open-vm-tools et open-vm-tools-desktop, la copie du fichier mons.xml vers /var/lib/lightdm/.config ne fonctionnait plus pour moi. Spécifier la résolution préférée comme celle-ci l'a corrigé.
Jropella
1

Ce que j'ai trouvé utile, c'est un article sur le 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 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 de courir update-grubpour 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 de 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.

Valinux
la source
0

Ne perdez pas de temps avec des scripts ou des 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étera désormais toujours les paramètres de l'utilisateur auquel vous êtes actuellement connecté.

* N'oubliez pas de cliquer sur "Appliquer"

Nathan JB
la source
Cela fonctionne mais c'est secondaire. Il effectue une charge normale dans la résolution maximale, puis passe à vos paramètres. Comment pouvez-vous lui faire charger la résolution correcte pour commencer?
Goddard
0

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 par la suite. 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, ainsi que pour obtenir 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;
blake private_last_name
la source
0

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 est nommée 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.

Concrètement, 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 .

Remarque

Le programme est un autre moyen d’obtenir la chaîne longue résolution cvt. 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.

Michael Faraday
la source
0

Si vous utilisez l’interface GTK de LightDM, vous pouvez xrandr -qalors rechercher les noms de vos moniteurs, puis éditer /etc/lightdm/lightdm-gtk-greeteret définir la propriété active-monitorcomme décrit dans les commentaires contenus dans ce fichier. Cette propriété peut prendre plusieurs valeurs ordonnées, y compris #cursorpour le moniteur qui affiche actuellement le curseur de la souris.

Dzamo Norton
la source
0

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'aveuglette et que vos moniteurs ne sont pas synchronisés avec la résolution souhaitée, écrasez simplement la touche de raccourci et tout est corrigé.

cryptozoologue
la source
-1

Le «mode écran préféré» pourrait être le problème

Je suppose que votre moniteur indique que la haute résolution de l'écran est préférée. Maintenant, vous souhaitez remplacer cette préférence par défaut . Voir ma réponse à une question très similaire pour des détails sur la façon dont cela peut être fait.

J'ai eu le problème opposé: j'ai toujours une résolution d'écran inférieure (1280x1024) à celle que je voulais (1600x1200). Le correctif que j'ai trouvé (et décrit dans la réponse liée) sera cependant applicable de manière analogue à votre problème.

Chriki
la source
Quiconque a voté contre ma réponse, pourriez-vous s'il vous plaît ajouter une note sur les raisons pour lesquelles vous pensez que cette réponse n'est pas utile?
Chriki
-2

J'ai eu le même problème sur mon MacBook Pro mi-2014 (11,1) sous Xenial. J'ai essayé toutes les solutions mentionnées ci-dessus sous différentes formes, mais invariablement X se mettrait en mode graphique faible de sécurité (mais affiché dans la résolution même, je voulais le définir comme valeur par défaut, pas moins.

Après beaucoup de discussions sur les forums et sur Google, il s’avère que j’avais oublié la solution potentielle la plus simple et par défaut: nomodeset. Cela a résolu le problème.

TL; DR: N'oubliez pas d'essayer Nomodeset! Esp. sur un MacbookPro 11,1.

IanGa
la source
-3

J'ai créé ce script pour le rendre plus dynamique (plusieurs espaces de travail / différents moniteurs).

Seul inconvénient: lorsque vous vous connectez à lightdm, l'écran clignote quand même pour changer de résolution: s

Leon
la source
1
La pâte n'a pas été trouvée.
Tobold
Effectivement; si vous avez encore une copie locale du script, envisagez de la télécharger à nouveau.
wchargin
1
J'ai téléchargé le script sur github. Je ne sais pas pourquoi paste.ubuntu.com l'a enlevé :(
Leon