Lubuntu: raccourci pour afficher les affichages

3

Je suis relativement nouveau sur Linux et nouveau sur les scripts bash.

J'essaie de configurer une touche Fn-F5 sur mon ancien netbook Asus EEE pour basculer entre moniteurs internes et externes.

Créer un script bash dans ~/bin/toggle_displays.sh :

    #!/bin/bash

if (xrandr | grep "VGA1 disconnected"); then
# external monitor not connected: do nothing
    xrandr --output LVDS1 --auto --output VGA1 --off 
else
# external monitor connected: toggle monitors
    if (xrandr | grep -E "LVDS1 connected (primary )?\("); then
        xrandr --output LVDS1 --auto --output VGA1 --off
    else
        xrandr --output LVDS1 --off --output VGA1 --auto
    fi
fi

Ajout du raccourci clavier à la section <keyboard> de ~/.config/openbox/lubuntu-rc.xml :

...
<keybind key="XF86Display">
  <action name="Execute">
    <command>~/bin/toggle_displays.sh</command>
  </action>
</keybind>
...

Le problème est très étrange: lorsque l’affichage interne est actif, le passage à l’extérieur fonctionne toujours. Mais lorsque externe est actif, la commutation rend simplement un écran noir avec le curseur de la souris sur l'affichage interne. Plus surprenant, le dernier commutateur fonctionne parfois si je lance le script depuis le terminal, pas avec le raccourci clavier.

Quel peut être le problème? Et comment pourrais-je éventuellement déboguer cela?

En guise de remarque, l'exécution du script depuis le terminal pour passer de l'affichage externe à l'affichage interne indique LVDS1 connected primary (normal left inverted right x axis y axis) to terminal. Pourquoi cela se produit-il si je ne echo dans mon script?

EDIT: Voici ma sortie xrandr (en utilisant un moniteur externe):

Screen 0: minimum 8 x 8, current 1680 x 1050, maximum 32767 x 32767
LVDS1 connected primary (normal left inverted right x axis y axis)
   1024x600       60.0 +
   800x600        60.3     56.2  
   640x480        59.9  
VGA1 connected 1680x1050+0+0 (normal left inverted right x axis y axis) 473mm x 296mm
   1680x1050      60.0*+
   1600x1200      60.0  
   1280x1024      75.0     60.0  
   1440x900       75.0     59.9  
   1280x800       59.8  
   1152x864       75.0  
   1024x768       75.1     70.1     60.0  
   832x624        74.6  
   800x600        72.2     75.0     60.3     56.2  
   640x480        75.0     72.8     66.7     60.0  
   720x400        70.1  
VIRTUAL1 disconnected (normal left inverted right x axis y axis)
    
posée Anton Babkin 16.07.2015 - 05:37
la source

1 réponse

0

J'ai écrit moi-même un script bash qui bascule entre l'écran de l'ordinateur portable et un écran externe. Il vérifie quel écran est allumé, l'éteint et active l'autre écran avec sa résolution native. La bonne chose est. qu'il n'a pas besoin de connaître les noms des écrans, car ceux-ci sont collectés à partir de xrandr.

#!/bin/bash
#Toggles between two screens. Assuming only one external screen is connected

monitors='xrandr | grep -P ' connected' | grep -o '^[^ ]*''
set -- "$monitors"
#monArr contains an array of the id's of the connected screens
declare -a monArr=($*)

#onMon holds the id of the *first* on screen found
onMon='xrandr --listmonitors | head -2 | grep -oP "[a-zA-Z]*-[0-9]$"'

#offMon holds the id of the other monitor, which is not on
if [ "$onMon" = "${monArr[0]}" ]

then
    offMon=${monArr[1]}
else
    offMon=${monArr[0]}
fi

#Switches the on screen off and vice versa
xrandr --output $offMon --auto --output $onMon --off
    
réponse donnée user3468236 13.12.2017 - 23:00
la source

Lire d'autres questions sur les étiquettes