Comment écrire un script bash pour configurer mes affichages lorsque HDMI est branché ou débranché

J'ai un cahier Kubuntu Precise (12.04) que j'utilise occasionnellement pour regarder des videos. Lorsque je le fais, je twig un câble HDMI connecté à un récepteur A / V avec un moniteur HDMI attaché à celui-ci.

Lorsque je regarde des videos de cette façon, je dois toujours utiliser l'écran de l'ordinateur portable lorsque j'interagis avec le système pour contrôler la lecture, etc. Le text sur le moniteur HDMI est difficile à lire d'où je suis assis.

Lorsque je twig le câble HDMI, Kubuntu le détecte, mais je dois passer par une étrange séquence de danse (ça marche, mais c'est compliqué) pour l'installer correctement à chaque fois pour la video et l'audio. Pour résoudre ce problème, j'essaie d'écrire un script bash avec xrandr pour le faire correctement la première fois.

J'ai eu l'idée de base de la réponse de Peoro à ce Q & R d'U & L intitulé: Un outil pour appliquer automatiquement la configuration RandR lorsque l'affichage externe est branché .

À propos de mon scénario

Mon script (inclus ci-dessous) fonctionne, mais doit être amélioré.

Il règle le mode video correctement pour le moniteur HDMI, mais le moniteur LVDS1 (sur le notebook) change pour afficher uniquement la partie supérieure gauche du bureau – ce qui pose problème car il coupe les barres de défilement de la window à droite et la barre des tâches le fond.

J'ai essayé de réparer ceci avec – --scale , mais ma première tentative a foiré suffisamment de choses que j'ai dû redémarrer pour get un affichage de travail en arrière.

Existe-t-il un moyen de faire en sorte que les deux écrans affichent le même contenu, mais que chacun utilise sa propre résolution préférée?

Ou, du less, un moyen de régler l'affichage de l'ordinateur portable afin que tout le bureau soit toujours accessible lorsque l'écran HDMI est utilisé?

Depuis que je débogue le script, il n'est pas encore nettoyé. Je voudrais peut-être faire plus tard.

Mon script

 #!/bin/bash ## hdmi_set ## Copyleft 11/13/2013 JPmicrosystems ## Adapted from ## https://unix.stackexchange.com/questions/4489/a-tool-for-automatically-applying-randr-configuration-when-external-display-is-p ## Answer by peoro # setting up new mode for my VGA ##xrandr --newmode "1920x1080" 148.5 1920 2008 2052 2200 1080 1089 1095 1125 +hsync +vsync ##xrandr --addmode VGA1 1920x1080 ##source $HOME/bin/bash_trace # default monitor is LVDS1 MONITOR=LVDS1 # functions to switch from LVDS1 to HDMI and vice versa function ActivateHDMI { echo "Switching to HDMI" ##xrandr --output HDMI1 --mode 1920x1080 --dpi 160 --output LVDS1 --off ##xrandr --output HDMI1 --same-as LVDS1 xrandr --output HDMI1 --mode 1920x1080 xrandr --output LVDS1 --mode 1366x768 MONITOR=HDMI1 } function DeactivateHDMI { echo "Switching to LVDS1" xrandr --output HDMI1 --off --output LVDS1 --auto MONITOR=LVDS1 } # functions to check if VGA is connected and in use function HDMIActive { [ $MONITOR = "HDMI1" ] } function HDMIConnected { ! xrandr | grep "^HDMI1" | grep disconnected } ## MONITOR doesn't do anything because it's not preserved between script executions # actual script ##while true ##do if HDMIConnected then ActivateHDMI fi if ! HDMIConnected then DeactivateHDMI fi ##sleep 1s ##done 

Sortie de xrandr

Voici ce que xrandr voit:

 bigbird@ramdass:~$ xrandr Screen 0: minimum 320 x 200, current 1366 x 768, maximum 8192 x 8192 LVDS1 connected 1366x768+0+0 (normal left inverted right x axis y axis) 344mm x 194mm 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 (normal left inverted right x axis y axis) 1920x1080 60.0 + 1680x1050 60.0 1280x1024 60.0 1440x900 59.9 1280x720 60.0 1024x768 60.0 800x600 60.3 720x480 59.9 640x480 60.0 720x400 70.1 DP1 disconnected (normal left inverted right x axis y axis) 

Vous devriez probablement utiliser simplement kscreen à la place, ce qui devrait résoudre tous vos problèmes. Il se souviendra des parameters d'un écran précédemment connecté et les restaure, une fois que vous le connecter à nouveau.

Si vous avez encore de tels problèmes en utilisant kscreen, cela vaut un rapport de bogue .

Comme Kubuntu 12.04 est assez vieux, vous devriez probablement y jeter un oeil.