¿Cómo puedo actualizar automáticamente el diseño de mi monitor en XFCE?

9

Tengo una computadora portátil que normalmente está acoplada a un monitor grande. Cuando esté acoplado, quiero usar el monitor grande como pantalla principal, con la pantalla del portátil como pantalla secundaria apagada a la derecha. Cuando se desacopla, la pantalla del portátil es la única pantalla.

XFCE no parece tener ese tipo de soporte para monitores múltiples incorporado. Encontré ARandR , que me permitió configurar mis monitores de la manera que quiero. Puedo usar ARandR para guardar perfiles para configuraciones acopladas y desacopladas (que en realidad son solo scripts de shell que invocan xrandr ).

Pero, ¿cómo hago para que esos perfiles se apliquen automáticamente cuando la computadora portátil está acoplada y desacoplada? ¿Debo intentar crear una regla de udev que detecte la estación de acoplamiento? ¿Hay una mejor manera?

cjm
fuente
No lo he probado aún, pero x-on-resize fue desarrollado por uno de los desarrolladores de X para hacer exactamente esto.
Mikel

Respuestas:

5

Una forma es crear una regla udev, pero como quería algo más portátil, tengo este script bash. Se basa en el soporte de inotifywait, no tiene algún tipo de bucles y se considera eficiente.

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 

No olvide hacer que el archivo sea ejecutable ( chmod +x external-lcd.sh). Luego, solo inícielo cada vez que inicie su DE.

Estoy usando esto en archlinux, así que creo que debería funcionar. Puede cambiar los parámetros de xrandr o cambiarlo para usar configuraciones de arandr.

phoops
fuente