Como posso atualizar automaticamente o layout do meu monitor no XFCE?

9

Eu tenho um laptop normalmente acoplado a um monitor grande. Quando encaixado, quero usar o monitor grande como tela principal, com a tela do laptop como tela secundária à direita. Quando desencaixada, a tela do laptop é a única tela.

O XFCE parece não ter esse tipo de suporte para vários monitores incorporado. Encontrei o ARandR , que permite configurar meus monitores da maneira que eu quero. Posso usar o ARandR para salvar perfis para configurações encaixadas e desencaixadas (que são realmente apenas scripts de shell que invocam o xrandr ).

Mas como faço para que esses perfis sejam aplicados automaticamente quando o laptop é encaixado e desencaixado? Devo tentar criar uma regra do udev que detecte a estação de acoplamento? Existe uma maneira melhor?

cjm
fonte
Ainda não o testei, mas o x-on-redimensionamento foi desenvolvido por um dos desenvolvedores do X para fazer exatamente isso.
Mikel

Respostas:

5

Uma maneira é criar uma regra do udev, mas como eu queria algo mais portátil, tenho esse script bash. Ele conta com o suporte do inotifywait, não possui algum tipo de loop e é considerado 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 

Não esqueça de tornar o arquivo executável ( chmod +x external-lcd.sh). Em seguida, inicie-o sempre que você iniciar o seu DE.

Estou usando isso no archlinux, então acho que deve funcionar. Você pode alterar os parâmetros xrandr ou trocá-lo para usar configurações de arandr.

phoops
fonte