Comment puis-je mettre à jour automatiquement la disposition de mon moniteur dans XFCE?

9

J'ai un ordinateur portable normalement connecté à un grand écran. Une fois ancré, je souhaite utiliser le grand écran comme écran principal, avec l'écran du portable comme écran secondaire vers la droite. Une fois déconnecté, l'écran du portable est le seul affichage.

XFCE ne semble pas avoir ce type de support multi-écrans intégré. J'ai trouvé ARandR , qui m'a permis d'installer mes moniteurs comme je le souhaite. Je peux utiliser ARandR pour enregistrer des profils pour des configurations ancrées et non ancrées (qui ne sont en fait que des scripts shell qui invoquent xrandr ).

Mais comment puis-je obtenir ces profils à appliquer automatiquement lorsque l'ordinateur portable est ancré et déconnecté? Dois-je essayer de créer une règle udev qui détecte la station d'accueil? Y a-t-il une meilleure façon?

cjm
la source
Je ne l'ai pas encore testé, mais x-on-resize a été développé par l'un des développeurs X pour faire exactement cela.
Mikel

Réponses:

5

Une façon est de créer une règle udev, mais comme je voulais quelque chose de plus portable, j'ai ce script bash. Il s'appuie sur le support inotifywait, n'a pas de boucles et est considéré comme efficace.

external-lcd.sh

#!/bin/sh
# inspired of:                                                                                            
#   http://unix.stackexchange.com/questions/4489/a-tool-for-automatically-applying-randr-configuration-   when-external-display-is-p                                                                                
#   http://ozlabs.org/~jk/docs/mergefb/                                                                   
#   http://superuser.com/questions/181517/how-to-execute-a-command-whenever-a-file-changes/181543#181543  

export MONITOR2=/sys/class/drm/card0-VGA-1/status                                                         

while inotifywait -e modify,create,delete,open,close,close_write,access $MONITOR2;                        

dmode="$(cat $MONITOR2)"                                                                                  

do                                                                                                        
    if [ "${dmode}" = disconnected ]; then                                                                
         /usr/bin/xrandr --auto                                                                           
         echo "${dmode}"                                                                                  
    elif [ "${dmode}" = connected ];then                                                                  
         /usr/bin/xrandr --output VGA1 --auto --right-of LVDS1                                            
         echo "${dmode}"                                                                                  
    else /usr/bin/xrandr --auto                                                                           
         echo "${dmode}"                                                                                  
    fi                                                                                                    
done 

N'oubliez pas de rendre le fichier exécutable ( chmod +x external-lcd.sh). Ensuite, lancez-le simplement lorsque vous lancez votre DE.

J'utilise ceci sur archlinux, donc je pense que cela devrait fonctionner. Vous pouvez modifier les paramètres xrandr ou les échanger pour utiliser des configurations arandr.

cerceaux
la source