Jak mogę automatycznie zaktualizować układ mojego monitora w XFCE?

9

Mam laptopa, który zwykle jest zadokowany na dużym monitorze. Po zadokowaniu chcę używać dużego monitora jako głównego wyświetlacza, a ekran laptopa jako dodatkowego wyświetlacza po prawej stronie. Po oddokowaniu ekran laptopa jest jedynym wyświetlaczem.

Wydaje się, że XFCE nie ma wbudowanej obsługi wielu monitorów. Znalazłem ARandR , co pozwoliło mi skonfigurować monitory tak, jak chcę. Mogę używać ARandR do zapisywania profili dla zadokowanych i oddokowanych konfiguracji (które są tak naprawdę tylko skryptami powłoki wywołującymi xrandr ).

Ale w jaki sposób uzyskać automatyczne stosowanie tych profili, gdy laptop jest zadokowany i oddokowany? Czy powinienem spróbować utworzyć regułę udev, która wykrywa stację dokującą? Czy jest lepszy sposób?

cjm
źródło
Jeszcze go nie testowałem, ale jeden z programistów X opracował x-on-resize, aby to zrobić.
Mikel

Odpowiedzi:

5

Jednym ze sposobów jest utworzenie reguły udev, ale ponieważ chciałem czegoś bardziej przenośnego, mam ten skrypt bash. Opiera się na wsparciu inotifywait, nie ma żadnych pętli i jest uważany za wydajny.

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 

Nie zapomnij, aby plik był wykonywalny ( chmod +x external-lcd.sh). Następnie po prostu uruchom go przy każdym uruchomieniu DE.

Używam tego na Archlinuxie, więc myślę, że powinien działać. Możesz zmienić parametry xrandr lub zamienić go, aby używać konfiguracji arandr.

phoops
źródło