Wie kann ich mein Monitorlayout in XFCE automatisch aktualisieren?

9

Ich habe einen Laptop, der normalerweise an einen großen Monitor angedockt ist. Im angedockten Zustand möchte ich den großen Monitor als primäres Display verwenden, während der Laptop-Bildschirm als sekundäres Display rechts ausgeschaltet ist. Wenn nicht angedockt, ist der Laptop-Bildschirm die einzige Anzeige.

In XFCE scheint diese Unterstützung für mehrere Monitore nicht integriert zu sein. Ich habe ARandR gefunden , mit dem ich meine Monitore so einrichten kann, wie ich es möchte. Ich kann ARandR verwenden, um Profile für angedockte und nicht angedockte Konfigurationen zu speichern (das sind wirklich nur Shell-Skripte, die xrandr aufrufen ).

Aber wie kann ich erreichen, dass diese Profile automatisch angewendet werden, wenn der Laptop angedockt und nicht angedockt ist? Sollte ich versuchen, eine udev-Regel zu erstellen, die die Dockingstation erkennt? Gibt es einen besseren Weg?

cjm
quelle
Ich habe es noch nicht getestet, aber x-on-resize wurde von einem der X-Entwickler entwickelt, um genau dies zu tun.
Mikel

Antworten:

5

Eine Möglichkeit besteht darin, eine udev-Regel zu erstellen, aber da ich etwas Portableres wollte, habe ich dieses Bash-Skript. Es basiert auf inotifywait-Unterstützung, hat keine Schleifen und wird als effizient angesehen.

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 

Vergessen Sie nicht, die Datei ausführbar zu machen ( chmod +x external-lcd.sh). Starten Sie es dann einfach, wann immer Sie Ihr DE starten.

Ich benutze dies unter Archlinux, also denke ich, dass es funktionieren sollte. Sie können xrandr-Parameter ändern oder austauschen, um arandr-Konfigurationen zu verwenden.

Phoops
quelle