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?


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.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.