Je suis affecté par le bogue: https://bugs.launchpad.net/ubuntu/+source/unity-greeter/+bug/874241 Sinon, si comme moi vous avez un ordinateur portable connecté à un second moniteur de résolution supérieure, LIGHTDM au stade de la connexion, miroirs affiche dans les deux écrans et leur attribue une résolution commune (1024X768) dans mon cas, au lieu d’allonger le bureau (écran principal avec l’indicateur de niveau et secondaire avec juste un logo, comme indiqué dans le cahier des charges Multiple Monitors UX du 12.04).
Voici mon xrandr -q
@L502X:~$ xrandr -q
Screen 0: minimum 320 x 200, current 1920 x 1848, maximum 8192 x 8192
LVDS1 connected 1366x768+309+1080 (normal left inverted right x axis y axis) 344mm x 193mm
1366x768 60.0*+
1360x768 59.8 60.0
1024x768 60.0
800x600 60.3 56.2
640x480 59.9
VGA1 disconnected (normal left inverted right x axis y axis)
HDMI1 connected 1920x1080+0+0 (normal left inverted right x axis y axis) 510mm x 287mm
1920x1080 60.0*+
1600x1200 60.0
1680x1050 60.0
1280x1024 60.0
1440x900 59.9
1280x960 60.0
1280x800 59.8
1024x768 60.0
800x600 60.3 56.2
640x480 60.0
DP1 disconnected (normal left inverted right x axis y axis)
J'ai essayé de forcer lightdm à exécuter certaines commandes xrandr afin de définir la bonne résolution pour chaque moniteur et d'étendre le bureau. J'ai donc créé un script simple nommé /usr/share/lightdmxrand.sh :
#!/bin/sh
xrandr --output HDMI1 --primary --mode 1920x1080 --output LVDS1 --mode 1366x768 --below HDMI1
Et dit à lightdm de l'exécuter: /etc/lightdm/lightdm.conf
[SeatDefaults]
greeter-session=unity-greeter
user-session=ubuntu
greeter-setup-script=/usr/bin/numlockx on
display-setup-script=/usr/share/lightdmxrandr.sh
redémarré lightdm: Sudo restart lightdm
Et l'écran de connexion de l'unité d'accueil a été correct. Les écrans avec leurs résolutions correctes respectives et si je déplace la souris vers un écran, la zone de connexion et le panneau de connexion lui permettent de se focaliser, alors que l’écran non focalisé n’affiche qu’un logo Ubuntu (comme spécifié dans le cahier des charges de MM UX). Fantastique!
Cette solution de contournement fonctionne très bien tant que le moniteur externe est connecté à l'ordinateur portable. Dans le cas où il n'est pas connecté, à l'étape de la connexion, j'obtiens: une ERREUR DE FAIBLE MODE GRAPHIQUE (vous utilisez un mode graphique faible, votre écran, vos périphériques d'entrée ... n'ont pas été détectés ...). Normal, car xrandr
essaie de générer une sortie sur un moniteur non connecté.
La question est la suivante: comment modifier le script de manière à ce que, lorsque le moniteur externe n'est pas connecté, xrandr
ne s'affiche que sur l'écran de l'ordinateur portable et ignore tout problème externe; moniteur. PAR EXEMPLE:
If (xrandr -q | grep 'HDMI1 connected') != NULL (HDMI1 is connected )
then xrandr --output HDMI1 --primary --mode 1920x1080 --output LVDS1 --mode 1366x768 --below HDMI1
else xrandr --output LVDS1 --mode 1366x768 (or do nothing - because the resolution of the laptop screen is correct when no external monitor is connected)
Merci d'avance.
J'ai réussi ce petit script de base ci-dessous qui répond à ma question. Désormais, que le moniteur externe soit connecté ou non, Lightdm utilise les bonnes résolutions au stade greeter. Néanmoins, ce même script doit être modifié pour devenir générique, de manière à ce que l'utilisateur n'ait pas besoin de spécifier manuellement les résolutions de son ordinateur portable et de ses écrans.
(Parse the output of `XRAND -q` command,
identify the connected devices,
grab their first/maximum resolutions
and use `XRANDR --output` to display them).
Donc, si quelqu'un a une meilleure solution ou un script plus générique, il est l'homme.
SCRIPT:
#!/bin/bash
# V-1.0 by Hanynowsky - April 2012.
# I am a very basic script that works around bug 874241 repprted in launchpad.
XCOM0=`xrandr -q | grep 'HDMI1 connected'`
XCOM1=`xrandr --output HDMI1 --primary --mode 1920x1080 --output LVDS1 --mode 1366x768 --below HDMI1`
XCOM2=`xrandr --output LVDS1 --mode 1366x768`
# if the external monitor is connected, then we tell XRANDR to set up an extended desktop
if [ -n "$XCOM0" ] || [ ! "$XCOM0" = "" ]; then echo $XCOM1
# if the external monitor is disconnected, then we tell XRANDR to output only to the laptop screen
else echo $XCOM2
fi
exit 0;
NOTE: j'ai aussi posté cette réponse ici
J'ai trouvé une solution de contournement très simple qui fonctionne parfaitement pour moi en cours d'exécution 13.04. sur un ordinateur portable avec un écran externe de 24 "qui n'est pas connecté en permanence.
Je vais simplement copier de ici
- s'identifier
- utilisez xrandr ou l’utilitaire de contrôle d’affichage pour configurer vos moniteurs comme vous le souhaitez dans l’écran de connexion
Sudo cp ~/.config/monitors.xml /var/lib/lightdm/.config/
Comme mes moniteurs étaient déjà configurés correctement, je n’ai plus qu’à passer à l’étape 3.
Merci beaucoup Hanynowsky! Trouver votre réponse m'a épargné une tonne de travail (récemment mis à jour le 12.04). Cependant, dans mon cas, la solution complète n’était pas complète et j’aimerais ajouter ce que j’ai appris. Ma configuration était un Samsung S22A300B branché sur le port VGA d’un Vaio VGN-CR120E avec écran 1280x800 intégré et un contrôleur graphique intégré Mobile GM965/GL960.
En bref, ce que j'ai trouvé était:
Pour contourner cette résolution maximale limitée, j'ai procédé comme suit:
CELA PRESQUE a fonctionné, mais après l’ouverture de session, le moniteur externe a été réinitialisé d’un Nice 1920x1080 à 1024x768. Il s’est avéré qu’il s’agissait d’un paramètre utilisateur persistant qui pouvait facilement être corrigé à l’aide du paramètre Moniteurs ... du système (du menu de l’engrenage) au format 1920x1080 désormais disponible. Maintenant, lorsque je démarre avec le moniteur externe connecté, tout fonctionne comme prévu.
Un petit problème supplémentaire: si ce script est exécuté deux fois (par exemple depuis terminal), la ligne xrandr --newmode recevra un message d'erreur "Nom incorrect (couleur ou police inexistante)", mais https: // stackoverflow. com/questions/851704/xrandr-errors-badname-nommé-couleur-ou-la-police-n'existe-pas expliqué cela et cela semble anodin. Cela ne devrait pas non plus être un problème lorsque le script est connecté à lightdm.conf conformément aux instructions de Hanynowsky par opposition à une exécution manuelle.
Je fournis les modifications adaptées à ce qui précède (VGA sans fonctionnalité EDID) dans l'espoir d'aider quelqu'un d'autre. Comme mentionné dans les réponses précédentes, vous devrez l'adapter à votre propre configuration. Je n'ai pas de bons conseils pour obtenir la bonne ligne de mod, mais si quelqu'un d'autre le fait, merci de le partager.
#!/bin/bash
# Modified for Vaio with 1920x1080 external on VGA
XCOM0=`xrandr -q | grep 'VGA1 connected'`
XCOM1="xrandr --output VGA1 --primary --mode 1920x1080 --output LVDS1 --mode 1280x800 --left-of VGA1"
XCOM2="xrandr --output LVDS1 --mode 1280x800"
NEWMODE="xrandr --newmode "1920x1080" 148.50 1920 2448 2492 2640 1080 1084 1089 1125 +hsync +vsync"
ADDMODE="xrandr --addmode VGA1 1920x1080"
# Always add this mode in case we need it (better would be to test first)
eval $NEWMODE
eval $ADDMODE
if [ -n "$XCOM0" ] || [ ! "$XCOM0" = "" ];
then
# if the external monitor is connected, then we tell XRANDR to set up an extended desktop
eval $XCOM1
else
# if the external monitor is disconnected, then we tell XRANDR to output only to the laptop screen
eval $XCOM2
fi
exit 0;
NOTE: Je ne suis pas sûr que eval soit nécessaire (vs écho dans l'original). Je l'ai mis avant de découvrir que mes paramètres d'Affichage ... réinitialisaient l'affichage externe à une résolution inférieure.
J'ai trouvé qu'au lieu d'utiliser --mode pour énoncer explicitement la résolution, --auto choisira la meilleure résolution pour vous (la plus grande, je crois).
#!/bin/bash
XCOM0=`xrandr -q | grep 'VGA1 connected'`
XCOM1=`xrandr --output LVDS1 --primary --auto --output VGA1 --auto --right-of LVDS1`
XCOM2=`xrandr --output LVDS1 --primary --auto`
# if the external monitor is connected, then we tell XRANDR to set up an extended desktop
if [ -n "$XCOM0" ] || [ ! "$XCOM0" = "" ]; then echo $XCOM1
# if the external monitor is disconnected, then we tell XRANDR to output only to the laptop screen
else echo $XCOM2
fi
exit 0;
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.