web-dev-qa-db-fra.com

Comment puis-je faire en sorte qu'Ubuntu reconnaisse toujours mon moniteur externe sur le côté gauche?

Chaque fois que j'allume mon ordinateur portable et que je branche mon moniteur externe via HDMI, je dois accéder aux paramètres d'affichage pour régler les paramètres par défaut. Au démarrage, j'obtiens un écran dupliqué au lieu de l'écran étendu que je veux. J'ai aussi mon moniteur externe à droite quand je le mets toujours à gauche. Comment puis-je faire en sorte que par défaut il reste étendu et à gauche? Oui, je mets toujours "appliquer" et "conserver cette configuration", mais il semble se réinitialiser au démarrage.

xrandr sortie avec le moniteur configuré exactement comme je veux:

Screen 0: minimum 8 x 8, current 3520 x 1080, maximum 32767 x 32767
LVDS1 connected primary 1600x900+1920+180 (normal left inverted right x axis y axis) 382mm x 215mm
   1600x900      60.01*+  40.03  
   1440x900      59.89  
   1368x768      60.00  
   1360x768      59.80    59.96  
   1152x864      60.00  
   1280x720      60.00  
   1024x768      60.00  
   1024x576      60.00  
   960x540       60.00  
   800x600       60.32    56.25  
   864x486       60.00  
   800x450       60.00  
   640x480       59.94  
   720x405       60.00  
   640x360       60.00  
DP1 disconnected (normal left inverted right x axis y axis)
DP2 disconnected (normal left inverted right x axis y axis)
DP3 disconnected (normal left inverted right x axis y axis)
HDMI1 disconnected (normal left inverted right x axis y axis)
HDMI2 disconnected (normal left inverted right x axis y axis)
HDMI3 disconnected (normal left inverted right x axis y axis)
VGA1 disconnected (normal left inverted right x axis y axis)
VIRTUAL1 disconnected (normal left inverted right x axis y axis)
DP-1-4 disconnected
HDMI-1-4 disconnected
HDMI-1-5 connected 1920x1080+0+0 510mm x 287mm
   1920x1080     60.00*+  50.00    59.94  
   1920x1080i    60.00    50.00    59.94  
   1280x1024     75.02    60.02  
   1280x960      60.00  
   1280x800      59.91  
   1152x864      75.00  
   1280x720      60.00    50.00    59.94  
   1024x768      75.08    70.07    60.00  
   832x624       74.55  
   800x600       72.19    75.00    60.32    56.25  
   720x576       50.00  
   720x480       60.00    59.94  
   640x480       75.00    72.81    66.67    60.00    59.94  
   720x400       70.08  
  1024x768 (0x55) 65.000MHz -HSync -VSync
        h: width  1024 start 1048 end 1184 total 1344 skew    0 clock  48.36KHz
        v: height  768 start  771 end  777 total  806           clock  60.00Hz
  800x600 (0x59) 40.000MHz +HSync +VSync
        h: width   800 start  840 end  968 total 1056 skew    0 clock  37.88KHz
        v: height  600 start  601 end  605 total  628           clock  60.32Hz
  800x600 (0x5a) 36.000MHz +HSync +VSync
        h: width   800 start  824 end  896 total 1024 skew    0 clock  35.16KHz
        v: height  600 start  601 end  603 total  625           clock  56.25Hz
  640x480 (0x62) 25.175MHz -HSync -VSync
        h: width   640 start  656 end  752 total  800 skew    0 clock  31.47KHz
        v: height  480 start  490 end  492 total  525           clock  59.94Hz
3
whatwhatwhat

Solution de contournement

Les dispositions d'écran qui ne collent pas se produisent souvent lorsque le pilote graphique et l'écran ne communiquent pas de manière suffisante. Cependant , cela ne signifie pas qu'il n'y a pas de solution.

La commande pour faire votre configuration comme vous le souhaitez, est (si je n'ai fait aucune erreur ou faute de frappe):

xrandr --output HDMI-1-5 --pos 0x0 --output LVDS1 --pos 1920x180

Pourquoi cette commande est-elle expliquée a.o. ici .

Comment utiliser

Vous pouvez utiliser cette commande de deux manières:

1. Version manuelle (raccourci)

Ajoutez-le à une touche de raccourci pour appuyer une fois le deuxième écran connecté: choisissez: Paramètres système> "Clavier"> "Raccourcis"> "Raccourcis personnalisés". Cliquez sur le "+" et ajoutez la commande:

xrandr --output HDMI-1-5 --pos 0x0 --output LVDS1 --pos 1920x180

2. Version Automaic

Exécutez cette commande automatiquement si le deuxième écran est connecté:

  • Copiez le script ci-dessous dans un fichier vide, enregistrez-le sous set_screen.py

    #!/usr/bin/env python3
    import subprocess
    import time
    
    def numscreens():
        scrdata = subprocess.check_output("xrandr").decode("utf-8").splitlines()
        return len([l for l in scrdata if " connected" in l])
    
    nscr1 = None
    
    while True:
        time.sleep(5)
        nscr2 = numscreens()
        if nscr2 != nscr1:
            if nscr2 == 2:
                subprocess.Popen(["xrandr", "--output", "HDMI-1-5", "--pos", "0x0",
                                  "--output", "LVDS1", "--pos", "1920x180"])
        nscr1 = nscr2
    
  • Testez l'exécution du script en l'exécutant à partir d'un terminal:

    python3 /path/to/set_screen.py
    
  • Si tout fonctionne bien, ajoutez-le aux applications de démarrage: Dash> Applications de démarrage> Ajouter. Ajoutez la commande:

    /bin/bash -c "sleep 30 && python3 /path/to/set_screen.py"
    
1
Jacob Vlijm