[xrandr] utilisation d'écran externe si connecté ET allumé

utilisation d'écran externe si connecté ET allumé [xrandr] - Logiciels - Linux et OS Alternatifs

Marsh Posté le 10-09-2010 à 08:50:43    

[:cetrio:2]  
J'ai un petit soucis avec xrandr qui ne répond pas complétement à mes attentes.
 
J'expose ma situation:
J'ai un portable sous chipset intel (4500MHD), avec une sortie VGA et HDMI, réso 15" (1280x800), et un écran externe 26" (1920x1200).
Plusieurs cas d'utilisation:
Lorsque le portable est seul, pas de soucis j'utilise LVDS1 pour avoir l'image sur l'écran du portable.
Lorsque j'ai l'écran externe connecté et allumé, je ne veut utiliser que HDMI1 (et LVDS1 est off).
 
Pas de bureau étendu/clone de prévu, je préfère avoir tout sur le même écran.
 
Là où ca se corse, c'est la sortie de xrandr.
 
LVDS1 allumé et HDMI1 non connecté:

Code :
  1. Screen 0: minimum 320 x 200, current 1280 x 800, maximum 8192 x 8192
  2. VGA1 disconnected (normal left inverted right x axis y axis)
  3. LVDS1 connected 1280x800+0+0 (normal left inverted right x axis y axis) 331mm x 207mm
  4.    1280x800       59.9*+
  5.    1024x768       60.0 
  6.    800x600        60.3     56.2 
  7.    640x480        59.9 
  8. HDMI1 disconnected (normal left inverted right x axis y axis)


 
LVDS1 allumé et HDMI1 connecté mais non allumé:

Code :
  1. Screen 0: minimum 320 x 200, current 1280 x 800, maximum 8192 x 8192
  2. VGA1 disconnected (normal left inverted right x axis y axis)
  3. LVDS1 connected 1280x800+0+0 (normal left inverted right x axis y axis) 331mm x 207mm
  4.    1280x800       59.9*+
  5.    1024x768       60.0 
  6.    800x600        60.3     56.2 
  7.    640x480        59.9 
  8. HDMI1 connected (normal left inverted right x axis y axis)
  9.    1920x1200      60.0 +


 
LVDS1 allumé et HDMI1 connecté et allumé:

Code :
  1. Screen 0: minimum 320 x 200, current 1920 x 1200, maximum 8192 x 8192
  2. VGA1 disconnected (normal left inverted right x axis y axis)
  3. LVDS1 connected 1280x800+0+0 (normal left inverted right x axis y axis) 331mm x 207mm
  4.    1280x800       59.9*+
  5.    1024x768       60.0 
  6.    800x600        60.3     56.2 
  7.    640x480        59.9 
  8. HDMI1 connected 1920x1200+0+0 (normal left inverted right x axis y axis) 550mm x 343mm
  9.    1920x1200      60.0*+


 
LVDS1 éteint et HDMI1 connecté et allumé:

Code :
  1. Screen 0: minimum 320 x 200, current 1920 x 1200, maximum 8192 x 8192
  2. VGA1 disconnected (normal left inverted right x axis y axis)
  3. LVDS1 connected 1280x800+0+0 (normal left inverted right x axis y axis) 331mm x 207mm
  4.    1280x800       59.9*+
  5.    1024x768       60.0 
  6.    800x600        60.3     56.2 
  7.    640x480        59.9 
  8. HDMI1 connected 1920x1200+0+0 (normal left inverted right x axis y axis) 550mm x 343mm
  9.    1920x1200      60.0*+


 
Avec ca, j'en ai déduis qu'un écran allumé avait une résolution préférée assignée (" connected " + "1920x1200+0+0" dans mon cas).
Mais xrandr ne semble pas me donner le même résultat.  
 
Par exemple, en branchant l'écran sur la sortie HDMI, xrandr me donne ca:
LVDS1 allumé et HDMI1 connecté mais non allumé:
 
LVDS1 allumé et HDMI1 passage de connecté et allumé à déconnecter et éteint:

Code :
  1. Screen 0: minimum 320 x 200, current 1920 x 1200, maximum 8192 x 8192
  2. VGA1 disconnected (normal left inverted right x axis y axis)
  3. LVDS1 connected 1280x800+0+0 (normal left inverted right x axis y axis) 331mm x 207mm
  4.    1280x800       59.9*+
  5.    1024x768       60.0 
  6.    800x600        60.3     56.2 
  7.    640x480        59.9 
  8. HDMI1 disconnected 1920x1200+0+0 (normal left inverted right x axis y axis) 550mm x 343mm


Ok pour disconnected, mais la résolution est toujours présente [:transparency]
 
Je rebranche l'écran externe sans l'allumer:
LVDS1 allumé et HDMI1 connecté et non allumé:

Code :
  1. Screen 0: minimum 320 x 200, current 1920 x 1200, maximum 8192 x 8192
  2. VGA1 disconnected (normal left inverted right x axis y axis)
  3. LVDS1 connected 1280x800+0+0 (normal left inverted right x axis y axis) 331mm x 207mm
  4.    1280x800       59.9*+
  5.    1024x768       60.0 
  6.    800x600        60.3     56.2 
  7.    640x480        59.9 
  8. HDMI1 connected 1920x1200+0+0 (normal left inverted right x axis y axis) 550mm x 343mm
  9.    1920x1200      60.0*+


Ah bah là, il semble connecté et allumé :/
"connected" renvoi donc l'état physique de la sortie (quelque chose est branché dessus ou pas).
Mais comment être certain qu'un écran est bel et bien allumé ?
 
Je me suis inspiré de ce lien: http://www.thinkwiki.org/wiki/Xorg [...] t_on_login
La première ouverture de session fonctionne bien quand l'écran externe est effectivement allumé et branché, mais pas par la suite si je décide de changer de configuration.
 
Mon petit script adapté:

Code :
  1. #!/bin/sh
  2. # If an external monitor is connected, place it with xrandr
  3. # External output may be "VGA" or "VGA-0" or "DVI-0" or "TMDS-1"
  4. EXTERNAL_OUTPUT="HDMI1"
  5. INTERNAL_OUTPUT="LVDS1"
  6. # EXTERNAL_LOCATION may be one of: left, right, above, or below
  7. EXTERNAL_LOCATION="right"
  8. case "$EXTERNAL_LOCATION" in
  9.        left|LEFT)
  10.                EXTERNAL_LOCATION="--left-of $INTERNAL_OUTPUT"
  11.                ;;
  12.        right|RIGHT)
  13.                EXTERNAL_LOCATION="--right-of $INTERNAL_OUTPUT"
  14.                ;;
  15.        top|TOP|above|ABOVE)
  16.                EXTERNAL_LOCATION="--above $INTERNAL_OUTPUT"
  17.                ;;
  18.        bottom|BOTTOM|below|BELOW)
  19.                EXTERNAL_LOCATION="--below $INTERNAL_OUTPUT"
  20.                ;;
  21.        *)
  22.                EXTERNAL_LOCATION="--left-of $INTERNAL_OUTPUT"
  23.                ;;
  24. esac
  25. XRANDR_EXTERNAL=`xrandr |grep $EXTERNAL_OUTPUT`;
  26. IS_CONNECTED=`echo $XRANDR_EXTERNAL |grep " connected " |wc -l`;
  27. IS_ON=`echo $XRANDR_EXTERNAL |sed 's/.* connected //' |sed 's/(.*//' |wc -m`;
  28. if [ $IS_CONNECTED -eq 1 ]; then
  29.     if [ $IS_ON -ne  1 ]; then
  30.         echo "connecté et allumé";
  31.         xrandr --output $EXTERNAL_OUTPUT --mode 1920x1200 --pos 0x0 --rotate normal --output $INTERNAL_OUTPUT --off
  32.     # xrandr --output $INTERNAL_OUTPUT --auto --output $EXTERNAL_OUTPUT --auto $EXTERNAL_LOCATION
  33.     # Alternative command in case of trouble:
  34.     # (sleep 2; xrandr --output $INTERNAL_OUTPUT --auto --output $EXTERNAL_OUTPUT --auto $EXTERNAL_LOCATION) &
  35.     fi
  36. else
  37.     xrandr --output $INTERNAL_OUTPUT --auto --output $EXTERNAL_OUTPUT --off
  38. fi


A vot' bon coeur :jap:

Reply

Marsh Posté le 10-09-2010 à 08:50:43   

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed