web-dev-qa-db-fra.com

Pourquoi les modifications apportées à lightdm.conf n’affectent-elles pas la résolution de mon écran de bureau?

Je voulais changer la résolution de mon écran de bureau en 1366x768. Mais mon VESA drivers(AMD REDWOOD) n'a pas détecté cette résolution. J'ai donc créé un script shell comme suit: -

xrandr --newmode "1368x768_60.00"   85.25  1368 1440 1576 1784  768 771 781 798 -hsync +vsync  
xrandr --addmode DVI-0 1368x768_60.00  
xrandr --output DisplayPort-0 --off --output DVI-0 --mode 1368x768_60.00 --pos 0x0 --rotate normal --output HDMI-0 --off

Je l'ai enregistré sous le nom lightdmxrandr.sh dans /usr/bin et l'ai rendu exécutable. Ensuite, j’ai ajouté les lignes suivantes à /usr/share/lightdm/lightdm.conf.d/50-ubuntu.conf (ce qui est l’équivalent du bien connu /etc/lightdm/lightdm.conf. J’utilise le fichier ci-dessus comme je le suis le 14.04 où il n’ya pas de /etc/lightdm/lightdm.conf.): -

greeter-session=unity-greeter  
display-setup-script=/usr/bin/lightdmxrandr.sh  
session-setup-script=/usr/bin/lightdmxrandr.sh

et sauvé. En théorie, cela aurait dû changer la résolution de l'écran de connexion et la résolution de l'écran du bureau en 1366x768. Mais étonnamment, cela n'a changé que la résolution de l'écran de connexion. La résolution du bureau n'a pas été modifiée. Plus tard, j'ai ajouté le script aux applications de démarrage et cela a changé la résolution de mon bureau.

Je veux donc savoir pourquoi les modifications que j'ai apportées au fichier lightdm.conf (ou plutôt au fichier 50-ubuntu.conf) n'ont pas affecté la résolution de mon bureau. Est-ce une sorte de bogue qui doit être signalé sur le tableau de bord ou est-ce une erreur de dire que les modifications dans lightdm affecteront l'écran du bureau?

PS: - À mon avis, cela ne concerne pas uniquement Ubuntu 14.04.

13
VenkiPhy6

J'ai essayé une chose similaire et après un débogage, je pense avoir compris ce qui se passait. Votre script est probablement exécuté et définit probablement la résolution correctement. Toutefois, comme il est exécuté par le gestionnaire de connexion, il s'exécute avant qu'Unity ait fini de configurer votre environnement de bureau et Unity lit ses propres paramètres et réinitialise la résolution. Donc, je pense que ce qui se passe est:

  1. lightdm exécute correctement votre script
  2. Cela définit la résolution souhaitée
  3. Unity se lance, lit ses paramètres et rétablit la résolution par défaut que vous avez là
  4. Votre résolution remonte à ce qu'elle était avant

Cela se produit maintenant car le pilote VESA ne détecte pas automatiquement la résolution souhaitée. Cela signifie que lorsque vous modifiez la résolution à partir de la section Écrans des paramètres de Unity, vous lui attribuez une résolution indisponible, sauf si vous exécutez les commandes xrandr. Par conséquent, ceci est ignoré au prochain redémarrage et Unity rétablit la résolution par défaut.

Vous devez donc mettre la résolution à la disposition de Unity, puis la définir par défaut et la laisser la gérer. Pour ce faire, vous devez d'abord ajouter cette ligne à /usr/share/lightdm/lightdm.conf.d/50-ubuntu.conf:

session-setup-script=/usr/bin/lightdmxrandr.sh

Ensuite, assurez-vous que /usr/bin/lightdmxrandr.sh ressemble à ceci:

xrandr --newmode "1368x768_60.00"   85.25  1368 1440 1576 1784  768 771 781 798 -hsync +vsync  
xrandr --addmode DVI-0 1368x768_60.00  

Notez que je ne suis pas en train de régler la résolution, mais seulement de la rendre disponible. Une fois ce redémarrage effectué, connectez-vous. La nouvelle résolution devrait maintenant être disponible dans Paramètres => Affichages. Si tel est le cas, choisissez-le ici, déconnectez-vous, reconnectez-vous et la résolution doit être correctement définie. Elle devrait désormais persister lors des redémarrages.


Approches alternatives:

  1. Créez un fichier /etc/X11/xorg.conf qui répertorie la résolution souhaitée. Quelque chose comme ça:

    Section "Monitor"
        Identifier    "Monitor0"
        Modeline "1368x768_60.00"  109.00  1280 1368 1496 1712  1024 1027 1034 1063 -hsync +vsync
    EndSection
    
    Section "Screen"
        Identifier     "Screen0"
        Device         "Card0"
        Monitor        "Monitor0"
        SubSection "Display"
            Modes       "1368x768_60.00"
        EndSubSection
    EndSection
    
    Section "Device"
        Identifier    "Card0"
        Driver        "vesa"
    EndSection
    
  2. Ajoutez le script qui exécute les commandes xrandr aux applications de démarrage de votre session.

11
terdon